Node.js 模块的导出
在 Node.js 中,每个文件都被视为一个模块,模块内部的变量和函数默认都是私有的,而需要被其他模块调用的变量和函数则需要用 exports 或 module.exports 进行导出。
exports 是 module.exports 的一个引用,即 exports = module.exports,因此它们的作用相同。使用 exports 可以向外部模块暴露变量、函数和对象等。
示例:
// person.js
var name = 'Tom';
var age = 18;
exports.getName = function() {
return name;
}
exports.getAge = function() {
return age;
}
在这个例子中,通过 exports 对象向外部模块暴露了 getName 和 getAge 两个函数。其他模块可以通过 require 方法引入该模块,然后使用 getName 和 getAge 方法来获取 name 和 age 的值。
// main.js
var person = require('./person');
console.log(person.getName()); // 'Tom'
console.log(person.getAge()); // 18
需要注意的是,当使用 exports 导出一个对象时,不能使用 exports = {} 的方式重新赋值,否则将会断开 exports 和 module.exports 的关联,导致无法正确导出模块。正确的方式是直接向 exports 对象添加属性和方法。
示例:
// person.js
exports.obj = {
name: 'Tom',
age: 18
}
exports.sayHello = function() {
console.log('Hello');
}
在这个例子中,通过 exports 对象向外部模块暴露了一个对象和一个函数。其他模块可以通过 require 方法引入该模块,然后使用 obj 对象和 sayHello 方法来访问该模块导出的内容。
// main.js
var person = require('./person');
console.log([person.obj.name](<http://person.obj.name/>)); // 'Tom'
console.log(person.obj.age); // 18
person.sayHello(); // 'Hello'
总之,exports 是 Node.js 中用于导出变量、函数和对象等的对象,它可以让模块内部的私有变量和函数暴露给其他模块使用,从而实现模块化的开发。