[关闭]
@phper 2015-03-02T07:00:56.000000Z 字数 743 阅读 3305

《深入浅出nodejs 》读书笔记

nodejs


第2章:Node的模块实现

  1. 通过require()方法来导入模块。
  2. require() 导入模块时,会缓存,第二次导入相同的模块,会直接使用缓存。
  3. require() 查找模块时,先找系统的核心模块,再按照就近原则,先查找本目录下的node_modules,再查找父目录下的node_modules,一级一级往后。
  4. 被导入的模块文件,通过 exporets对象将方法导出。还存在一个module对象,exports是module的属性。所以有2种方式定义一个模块:

    exports.add = {};
    module.exports = add;

  5. 一个文件就是一个模块,每个模块文件就存在着require、exports、module这3个方法,不需要定义和导入就可以直接使用。原因是,node在编译的时候,在头部添加了(function (exports, require, module, __filename, __direname){\n}) ,形成闭包。

比如一个简单的模块文件。 math.js:

var math = require('math');
exports.area = function (radius) {
    return Math.PI * radius * radius;
}

node 编译时,会变成这样:

(function (exports, require, module, __filename, __direname) {
    var math = require('math');
    exports.area = function (radius) {
        return Math.PI * radius * radius;
    }
})

每个文件都会是这样,所以,一些方法我们使用,但是变量和属性就不能直接调用了,形成一个闭包。

第3章 异步IO

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注