我使用混合的要求(如在@Hinrich答案)和global.someNamespaceName.anInstance
。
一般来说,我使用global.someNamespaceName.anInstance
引用一个对象,即类,的具体实例,例如一个特定的数据库连接,或应用程序的特定配置。例如,在主应用程序初始化代码,像
var config = { lots of config stuff, e.g. .mongoURI, .port, .loggerFormat, .prefs, ... }
...
global.myAppName.config = config ;
global.myAppName.myMongo = new MyMongo(config.mongoURI);
global.myAppName.mySQL = new MySQL(config.mySQLSettings);
我用需要主要为“典型的”节点十岁上下的东西和标准库,即var QueryString = require('querystring');
这“似乎是正确的”,以我的想法,但不知道是否有任何具体的指导方针,无论哪种方式都很好。 global.xxx的优势在于,您可以避免在每个文件开始时有数十个需求,而排序可能是一个问题。使用global.myAppName.someOtherName的
两种可能的缺点:
- 命名空间冲突。除非你有一个庞大的项目和多个不通信的程序员,否则不应该成为问题。这是可能发生的需求...
- 它需要两个查找(.myAppName和.someOtherName)来查找该对象,这将是一个极其微小的性能命中。如果您在循环中引用该项目数千次,请将其缓存在局部变量中。
全球化模块不是一个好主意,因为它可能会弄乱你的变量。看看[这里](http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm)一些基本的介绍。请展示一些代码,如果我们应该帮助你实际解决你的问题 – Hinrich
我正在全球化只是在这些模块内包含功能的控制器,你能告诉我一个更好的方法吗? – Zeeshan
你能告诉我你的代码吗? – Hinrich