节点js,函数执行
我有一个关于节点js执行函数的问题。代码示例节点js,函数执行
const dynamic = require('dynamic'),
obj1 = dynamic.obj1,
ovj2 = dynamic.obj2;
const myFunction1 =() => {
let x = obj1
};
const myFunction2 =() => {
let x = obj2
};
module.exports.myFunction1 = myFunction1;
module.exports.myFunction2 = myFunction2;
问题是如何设计此代码,以便每次调用myFunctions时都可以从动态变量中获取更新值。因为要求只工作一次,在模块的开头。而动态将是静态的,如何为它做出解决方案?
像您期望这应该工作:
const dynamic = require('dynamic');
const myFunction1 =() => {
const x = dynamic.obj1;
};
const myFunction2 =() => {
const x = dynamic.obj2;
};
module.exports.myFunction1 = myFunction1;
module.exports.myFunction2 = myFunction2;
如果您是dynamic
模块的所有者,您可以将其更改为从此模块导出函数而不是对象,这要归功于require方法的此缓存机制不会成为问题。然后,你可以调用函数从该模块在模块的每一个地方,和值可retrived更新
// dynamic.js
module.exports =() => {
return {
obj1,
obj2
};
};
//and in another module
const dynamic = require('dynamic'),
// then in code you can do this
obj1 = dynamic().obj1,
ovj2 = dynamic().obj2;
但obj1和obj2将与静态数据。我问的原因是我需要rewuirte对象,如果动态更改... –
@EdwardGizbreht嗯所以什么是'动态'模块是它的JavaScript文件或JSON文件? –
它是代理表。 –
为什么你有3个不同的任务来传递两个变量下降? – Aron
我的代码会更大,我试图找到解决方案来声明我的所有变量,并在更改动态时更新它。大多数变量将执行该方法来创建返回数据。另外,我还有代理,在这种情况下是动态的,如果有任何更改,将会更新 –
如果您的代码不应该是同构的,即在node.js和浏览器中也可以使用,则只需使用ECMAScript代理对象。它满足您的所有要求,包括读取变量和动态功能控制流程的实际值。在更简单的情况下,getters/setters就足够了。 –