在Node.js中,我们可以使用exports
对象来暴露模块的方法和属性,以便其他文件可以使用require
函数引入并使用这些方法和属性。
// math.js
exports.add = function(a, b) {
return a + b;
};
exports.subtract = function(a, b) {
return a - b;
};
在另一个文件中,我们可以通过require
函数引入上述math.js
模块,并使用其中定义的方法:
// main.js
const math = require('./math.js');
console.log(math.add(1, 2)); // 输出: 3
console.log(math.subtract(3, 2)); // 输出: 1
另外,我们也可以使用module.exports
来代替exports
,两者的主要区别在于module.exports
初始值是一个空对象,而exports
初始值是指向module.exports
的引用。
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = {
add,
subtract
};
在使用module.exports
时,我们通常会将所有需要暴露的方法或属性直接赋值给它,而不是使用exports
。这样做的好处是,我们不必担心exports
是否指向正确的对象,因为module.exports
始终指向我们想要暴露的对象。
在main.js
中,我们同样可以通过require
函数引入并使用这些方法:
// main.js
const math = require('./math.js');
console.log(math.add(1, 2)); // 输出: 3
console.log(math.subtract(3, 2)); // 输出: 1
总结两种方式的区别,exports
是module.exports
的引用,因此通过exports
添加的方法和属性也会被添加到module.exports
中。通常推荐使用module.exports
,因为它更直观,更易于理解。