节点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时都可以从动态变量中获取更新值。因为要求只工作一次,在模块的开头。而动态将是静态的,如何为它做出解决方案?

+0

为什么你有3个不同的任务来传递两个变量下降? – Aron

+0

我的代码会更大,我试图找到解决方案来声明我的所有变量,并在更改动态时更新它。大多数变量将执行该方法来创建返回数据。另外,我还有代理,在这种情况下是动态的,如果有任何更改,将会更新 –

+0

如果您的代码不应该是同构的,即在node.js和浏览器中也可以使用,则只需使用ECMAScript代理对象。它满足您的所有要求,包括读取变量和动态功能控制流程的实际值。在更简单的情况下,getters/setters就足够了。 –

像您期望这应该工作:

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; 
+0

但obj1和obj2将与静态数据。我问的原因是我需要rewuirte对象,如果动态更改... –

+0

@EdwardGizbreht嗯所以什么是'动态'模块是它的JavaScript文件或JSON文件? –

+0

它是代理表。 –