先导出函数,然后导出对象
Export function first and object subsequently
我有一个自定义模块,希望提供一个方法在第一个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');
other.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
上做的工作。
有一些方法可以清除所需的缓存。你可以在这里检查node.jsrequire()缓存-是否可能无效?然而,我认为这不是一个好主意。我建议通过你需要的模块。即只初始化一次,然后将其分配给其他模块。
server.js:
var module = require('./module.js');
var obj = module.init();
require('./other.js')(obj);
other.js:
module.exports = function(obj) {
console.log('--DEBUG: other.js:', obj); // <-- The same obj
}
module.js:
var obj = null;
var init = function() {
obj = { 'foo': 'bar' };
return obj;
};
module.exports = { init: init };
相关文章:
- 将值输入到对象,然后该对象推送到数组
- 如何在鼠标悬停时将对象从起始位置移动到结束位置,然后在鼠标悬停后再次移动
- 搜索包含值的json对象键,然后取消设置
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- 使用函数for循环遍历对象以更改值,然后返回结果
- 尝试将对象添加到存储阵列中,然后通过循环将它们写出
- 将普通的 PNG 图像转换为 JSON 数据,然后存储到对象
- 存储多个Json对象,然后对其进行排序
- 我想使用replace函数扫描json对象,然后用字符串替换匹配的单词
- 如何在javascript中生成数组对象的数组,然后将其传递给java
- 从数组中快速打印对象,然后循环
- 根据属性值创建多个对象数组,然后遍历每个数组
- 找到对象中值最高的键,然后将其发布到innerHTML中
- 将JSON字符串转换为JavaScript对象,然后创建一个HTML表
- 无法更新 Javascript 对象文本中的值,然后更新页面
- 复制对象,然后更新 JSON 对象中的值
- 使用 .push 对对象进行分组,然后输出到字符串
- 在函数中创建 jQuery 对象然后不使用它是否会产生内存泄漏
- 访问'这'promise回调中的对象(然后)
- 声明一个javascript对象.然后使用jQuery和Ajax设置属性