I am working on a NodeJS application, I have different modules and in those modules different packages as those packages are using functions from other packages, I had a problem requiring controllers everywhere so what i did is, I Globalized those controllers,
e.g.
global.CTRLS = { userCtrl : [require('./User/profile/controller/profileCtrl')]
, productCtrl : [require('./Product/Products/controller/productCtrl')] }
so my question is
答案 0 :(得分:2)
我使用了需求的混合(如在@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:
的两个可能的缺点答案 1 :(得分:1)
您可以在需要它们的模块中require
控制器。所以在模块中,例如
var profileCtrl = require('./User/profile/controller/profileCtrl');
或控制器所在的任何地方,相对于您的呼叫模块。然后,您可以访问控制器,并可以访问它的导出变量和函数。