码迷,mamicode.com
首页 > Web开发 > 详细

Node.js 初步了解

时间:2018-08-12 21:28:49      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:纯粹   pre   直接   har   soc   png   ons   inpu   utf-8   

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配合,开发长连接的实时交互应用程序。

 

比如:

 

● 用户表单收集

 

● 考试系统

 

● 打分系统

 

● 聊天室

 

● 图文直播

 

Node.js 初步了解

标签:纯粹   pre   直接   har   soc   png   ons   inpu   utf-8   

原文地址:https://www.cnblogs.com/kun666/p/9464106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!