NodeJS:在模块之间共享应用程序状态

时间:2015-03-11 02:29:52

标签: node.js

我正在开发一个node.js应用程序,该应用程序旨在使用npm进行全局安装。我正在使用commander来向命令行公开多个命令。即my-app servemy-app clean。我遇到的问题是有一些数据我希望我的lib目录中的所有JS文件都可以访问,但是从我所知道的,我应该避免使用{{1}对象。

以下是我提出的解决方案:

在我的global目录中,我有一个名为lib的文件。内容:

shared-state.js

只要我在应用程序启动期间调用init,我就可以编写以下代码来访问共享数据。

var initialized = false;

var SHAREDSTATE = module.exports = {
    init: function( stateToShare ) {
        if ( !initialized ) {
            SHAREDSTATE.data = stateToShare;
            initialized = true;
        } else {
            // log warning about calling init > 1 time
        }
        return SHAREDSTATE;
    }
};

这是一个举例说明我所遵循的模式。实际上,我正在采取措施为任何正在使用它的模块使数据只读,并且我正在适当地处理多次调用init的情况。

我的问题是这样的:为了避免使用var sharedState = require('./shared-state').data; 对象,我是否因此而疯狂?这是节点中已建立的模式吗?这叫什么?如果不是,其他人如何解决类似的问题?

0 个答案:

没有答案
相关问题