【发布时间】:2013-08-28 20:59:27
【问题描述】:
我有一个自定义模块,想提供一种方法来在第一个require 上初始化它,但在后续需要时直接返回一个对象。
但模块在第一次需要时会被缓存,因此后续需要仍然返回 init 函数,而不是直接返回 obj。
server.js:
var module = require('./module.js');
var obj = module.init();
console.log('--DEBUG: server.js:', obj); // <-- Works: returns `obj`.
require('./other.js');
其他.js:
var obj = require('./module.js');
console.log('--DEBUG: other.js:', obj); // <-- Problem: still returns `init` function.
module.js:
var obj = null;
var init = function() {
obj = { 'foo': 'bar' };
return obj;
};
module.exports = (obj) ? obj : { init: init };
我该如何解决这个问题?或者是否有一个既定的模式来实现这一目标?
但我想保留obj 的缓存,因为我真正的init 做了一些我不想在每个require 上做的工作。
【问题讨论】:
标签: javascript node.js node-modules