Node.js初学

Node.js 初学~

其技术上最大的卖点是非阻塞的I/O和基于事件的异步处理机制。

后端没有什么深入研究,一直对其不是很了解。

透过一个例子看 非阻塞 与 通常的 阻塞

var text = readFileSync("sample.html");//执行完才会进行下一步
console.log(text);

//第一个例子  必须等到 readFileSync 读完文件, 才会有值的接受 以及后来的打印。

阻塞I/O会导致线程等待,从而造成线程资源浪费,因为当应用服务器处理请求时,需要等待I/O执行结束才能继续处理。

readFile("sample.html", function(err, text) {
    console.log(text); //
});
console.log("xxx");

//这个例子 可以看出   回调在这里的应用,在这里 读文件与 console.log('xxx'); 同步进行,各做各的事,等读完文件 在执行里面的console.log(text)  。

这就是非阻塞的特点。 

Node有一个无需I/O等待或执行环境切换的单独执行环境。Node的I/O调用会转换为请求处理函数,当某些数据可用时事件轮询会调度事件让这些函数工作。事件轮询和事件处理程序模型差不多,就像浏览器中的JavaScript一样。程序的执行最好能快速返回到事件循环中,以便马上调度下一个可执行的任务。

编写基于Node.js的模块

Node.js遵循了CommonJS 的一些规范 比如modules。http://www.commonjs.org/

所有定义都写在 module.exports 下

由于浏览器端 没有改 对象,所以我们写之前 可以先判断下。

//这是underscore.js写的基于 node 、或者 window下的定义方法
if (typeof exports !== 'undefined') {
    if (typeof module !== 'undefined' && module.exports) {
      exports = module.exports = _;
    }
    exports._ = _;
  } else {
    root._ = _;  //root为window
  }
Now or nerver .
原文地址:https://www.cnblogs.com/iyueyao/p/3320469.html