Node.js 初步了解

Node.js的特点:单线程、非阻塞异步I/O、事件驱动

先来说说I/O:I就是input数据读取,O就是Output数据的写入,大部分网站I/O是非常多的,,但是I/O的时候cpu是命令磁盘去做事情,此时CPU自己就闲置了。

同步(synchronous):当系统遇见了一个需要耗费大量时间的事情的时候,选择死等。

异步(Asynchronous):当系统遇见了一个需要耗费大量时间的事情的时候,不死等,先做后面的事情,耗时事情做完之后,执行回调函数。

Node.js是后台的东西

我们写一段程序来举例

//读取内置模块http,这个模块开发服务器用的
var http = require("http");

//创建一个服务器
var server = http.createServer(function(req,res){
  res.setHeader("Content-Type","text/html;charset=UTF-8");   res.end(
"<h1>哈哈哈,我买了一个iPhone" + (4 + 4) + "Plus,</h1>"); }); //监听 server.listen(3000)

写完后使用cmd命令调用

在Node.js中用谁 就Node谁

此时光标挂起,并没有返回,表示此时node正在执行一个监听。

按ctrl+c可以将结束挂起状态。

访问3000端口就可以看到页面了

我们F12查看源代码

此时我们查看源代码,我们发现数字8是直接写上去的,没有4+4的运算痕迹。

原因就是NodeJS运行在服务器端,而不是浏览器端。服务器计算了数字8之后,发给了浏览器就是扁平的、纯粹的HTML了,没有任何程序。

 

单线程

Node.js中只使用一个线程。

异步I/O特性

简要概括就是:

当在访问数据库取得数据的时候,需要一段较长的时间。在传统的处理机制中,在执行了访问数据库代码之后,整个线程都将暂停下来,等待数据库返回结果,才能执行后面的代码。也就是说,I/O阻塞了代码的执行,极大地降低了程序的执行效率。

由于Node.js中采用了非阻塞型I/O机制,因此在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。

事件驱动

事件驱动是NodeJS的底层机制,我们只需要了解NodeJS不会发生错误的原因就是事件驱动,有一个事件环。

事件环机制是NodeJS的底层机制,保证了NodeJS可以高效准确的运行而不会紊乱。

node.js适合干什么?

当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与web socket配合,开发长连接的实时交互应用程序。

比如:

● 用户表单收集

● 考试系统

● 打分系统

● 聊天室

● 图文直播

猜你喜欢

转载自www.cnblogs.com/kun666/p/9464106.html
今日推荐