我正在开发一个node.js应用程序,该应用程序旨在使用npm进行全局安装。我正在使用commander来向命令行公开多个命令。即my-app serve
和my-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;
对象,我是否因此而疯狂?这是节点中已建立的模式吗?这叫什么?如果不是,其他人如何解决类似的问题?