模块(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") 中实现。

results matching ""

    No results matching ""