【发布时间】:2017-02-14 13:12:44
【问题描述】:
我的 nodejs 项目需要由不同的 .js 模块访问的内存表。一些模块会更新表,但所有模块的数据必须相同(类似于内存数据库)。因此,我需要一个真正的全局对象……而不是每个模块对象的全局对象。创建一个包含所有对象的 common.js 文件,然后在所有模块中 require 它是行不通的,因为数据将是各个模块的全局/本地数据。我已经看到对 nodejs globals 的引用,其中 global.myobject 对所有模块都是全局的,但文档并不清楚这是否如此。我看到的最后一次讨论是从 2014 年开始的。谁能告诉我目前的情况是什么?这个问题是如何解决的?
【问题讨论】:
-
拥有一个 common.js 并导出一个对象文字,对于所有需要它的模块来说都是全局的。
-
实际上,需要来自其他模块的相同
common.js将做到。每个模块只实例化一次,不管它需要多久。这正是您所需要的 - 单身人士。 -
@Bergi 2011 年的一个有点类似的问题stackoverflow.com/questions/8555792/creating-a-global-object 建议使用单例,但也建议不要这样做。你能证明这是如何工作的以及利弊吗?
-
@Keith 你是说通过要求 common.js 对其对象所做的更改将反映在下一个需要它的模块中吗?我不确定。你能指出一些支持这一点的文档吗?
-
@MichaelE 这是一个 C# 问题,在这里并不适用。是的,singleton 通常是个坏主意,因为它是全局状态,但这正是您所要求的。做一个模块,导出一个对象,就这么简单。
标签: javascript node.js