模块(Modules)
稳定度:3 - 已锁定
Node.js 有一个简单的模块加载系统。在 Node.js 中,文件和模块是一一对应的(每个文件被视为一个单独的模块)。举个例子,foo.js
加载同一目录下的 circle.js
模块。
foo.js
的内容:
const circle = require('./circle.js');
console.log(`The area of a circle of radius 4 is ${circle.area(4)}`);
circle.js
的内容:
const PI = Math.PI;
exports.area = (r) => PI * r * r;
exports.circumference = (r) => 2 * PI * r;
circle.js
模块导出了 area()
和 circumference()
两个函数。为了将函数和对象添加进你的模块根,你可以将它们添加到特殊的 exports
对象下。
模块内的本地变量是私有的,因为模块被 Node.js 包装在一个函数中(详见模块包装器)。在这个例子中,变量 PI
就是 circle.js
私有的。
如果你希望将你的模块根导出为一个函数(比如构造函数)或一次导出一个完整的对象而不是每一次都创建一个属性,请赋值给 module.exports
而不是 exports
。
下面,我将在 bar.js
中使用 square
模块导出的构造函数。
const square = require('./square.js');
var mySquare = square(2);
console.log(`The area of my square is ${mySquare.area()}`);
square
模块定义在 square.js
中:
// 赋值给 exports 将不会修改模块,必须使用 module.exports
module.exports = (width) => {
return {
area: () => width * width
};
}
模块系统在 require("module")
中实现。