1

在 Node.js 中,一些模块导出对象

var Constructor = function() {};
exports.MyObject = new Constructor();
// or
module.exports = new Constructor();

和一些模块导出功能:

var Constructor = function() {};
exports.MyConstructor = Constructor;
// or
module.exports = Constructor;

什么时候应该导出对象,什么时候应该导出函数?

4

1 回答 1

0

一个考虑因素可能是 Module 模块的缓存功能。来自文档;我的重点:

模块在第一次加载后被缓存。这意味着(除其他外)每次调用 require('foo') 都会得到完全相同的返回对象,如果它会解析到同一个文件。

多次调用 require('foo') 可能不会导致模块代码被多次执行。这是一个重要的特点。有了它,可以返回“部分完成”的对象,从而允许加载传递依赖项,即使它们会导致循环。

如果你想让一个模块多次执行代码,那么导出一个函数,然后调用那个函数。

于 2013-06-28T19:39:37.427 回答