首先,我在Node.js中没有那么有经验。我对Node.js模块的理解是,这些模块与Python的模块非常相似。我的意思是只执行一次代码并保持内部状态。直到我读过this article:可以依赖node.js模块状态吗?
但你可能不知道,如果你的项目是 基于NPM模块都需要在“共享”模块作为 依赖,就像(我肯定没有!)这样的:
node_modules/one/index.js: var shared = require('shared'); node_modules/two/index.js: var shared = require('shared');
...而 安装它们的依赖与NPM,将有 “共享/ index.js” 两个副本晾一下:
node_modules/one/node_modules/shared/index.js node_modules/two/node_modules/shared/index.js
读完之后,我不确定是否可以依赖模块的内部状态,因为在不同路径上存在一个模块的可能性,因此在缓存中有相同模块的两个或多个实例。这意味着至少“通过本地模块机制不再有单身人士”。同时,我还没有听说过Python中的这个问题。
这是否意味着几乎所有模块都只返回函数/构造函数(如express.js
应用程序创建流程)并避免内部状态?
那么,如果同一个模块同时出现两个不同状态是一个问题,那么重点就是避免模块的状态?因此,在需求期间,应该通过依赖注入来在模块之间显式地传递实例。 –
@Ostrovski我尽量避免依赖注入,因为它有点魔法,可能会让人困惑。如果我需要共享状态,我尝试使用共享的状态对象或某种消息传递(事件总线或类似memcached或redis的东西) - 这样您可以更好地控制情况。 – tkone