Nodejs极简入门教程(一):模块机制

2020-06-17 06:06:11易采站长站整理

在加载 JavaScript 模块时,被加载的模块被包裹在一个函数中:

function(module, exports, __filename, __dirname, …) {
    JavaScript module
}

每个 JavaScript 模块访问到的 module、exports、__filename、__dirname 等实际上是通过函数参数传递进来的。由于这种包裹,才使得模块的局部变量外部无法访问。但有时候也会出现让人难以理解的问题,例如:

test1.js


exports = {
    name: ‘Name5566’,
}

test2.js


module.exports = {
    name: ‘Name5566’,
}

加载这两个模块:


var test1 = require(‘./test1.js’);
console.log(test1.name); // undefined
var test2 = require(‘./test2.js’);
console.log(test2.name); // Name5566

exports 作为参数传递给模块,我们通过 exports.x 自然可以给 exports 对象添加属性(或方法),但直接给 exports 赋值(例如,exports = x)仅仅是改变了形参而非实参的值,因此:

1.为 exports 添加属性时,使用 exports
2.为 exports 赋值时,使用 module.exports

按 CommonJS 的规范,一个完整的包应该包含有:

1.package.json 包描述文件
2.bin 二进制文件目录
3.lib JavaScript 代码目录
4.doc 文档目录
5.test 测试代码目录

NPM 是一个 Node 的一个包管理工具。常见用法:

查看命令的文档:


npm help install

查看命令 install 的文档。

安装一个包:

npm install redis
安装 redis 这个包。install 命令会将包安装在当前目录下的 node_modules 目录中。

移除一个包:

npm remove redis
移除 redis 这个包。remove 命令会将当前目录下的包移除掉。