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

欢迎进入Node.js世界

时间:2015-03-11 23:25:18      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

官网上(http://www.nodejs.org )给Node下的定义是:”一个搭建在Chrome JavaScript 运行时上的平台,用于构建高速、可伸缩的网络程序。Node.js采用的事件驱动、非阻塞I/O模型,使它既轻量又高效,并成为构建运行在分布式设备上的数据密集型实时程序的完美选择“。

异步和事件触发:浏览器

Node为服务端JavaScript提供了一个事件驱动的、异步的平台。它把JavaScript带到服务端中的方式跟浏览器把JavaScript带到客户端的方式几乎一模一样。了解浏览器的工作原理对我们了解Node的工作原理会有很大帮助。它们都是事件驱动(用事件轮询)和非阻塞的I/O处理(用异步I/O)。下面举个例子说明这是什么意思。

我们来看一小段jQuery 用XMLHttpRequest(XHR)做Ajax 请求的代码:

$.post(‘/resource.json‘,function(data){//I/O不会阻塞执行
    console.log(data);
})
//脚本继续执行

这个程序会发送一个到resource.json的HTTP请求。当响应返回时会调用带着参数data的匿名函数(在这个上下文中的回调函数),data就是从那个请求中得到的数据。注意,代码没有写成下面这样:

var data=$.post(‘/resource.json‘);//在I/O完成之前程序会被阻塞
console.log(data);

在这个例子中,假定对resource.json的响应在准备好后会存储在变量data中,并且在此之前函数console.log 不会执行。I/O操作(Ajax 请求)会阻塞脚本继续执行,直到数据准备好。因为浏览器是单线程的,如果这个请求用了400ms 才返回,那么页面上的其他任何事件都要等到那之后才能执行。可以想象一下,如果一幅动画被停住了,或者用户试着跟页面交互时动不了,那种用户体验有多糟糕。

 

欢迎进入Node.js世界

标签:

原文地址:http://www.cnblogs.com/zhongxinWang/p/4331120.html

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