我使用混合的要求(如在@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