在节点中,为什么有些模块会导出函数?

时间:2013-06-28 19:39:37

标签: node.js

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

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

和一些模块导出函数:

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

何时应该导出对象以及何时导出函数?

1 个答案:

答案 0 :(得分:0)

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

  

模块在首次加载后进行缓存。这意味着   (除此之外)每次调用require('foo')都会得到   完全相同的对象返回,如果它将解析为相同   文件。

     

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

     

如果您想让模块多次执行代码,请导出   一个函数,并调用该函数。