在使用require('some_module.js')时运行脚本 – 好的做法?
我正在谈论服务器端JS(与node.js和require.js)我有三个文件
//1) app.js - main entry point: //======================================================= var myservice = require('./myservice'); rt.register('someKey', require('./XYZhandler').handler); //2) myservice.js: //======================================================= var handlers = {}; exports.register = function(key, handler) { handlers[key] = handler; }; //3) and finally XYZhandler.js: //======================================================= exports.handler = function() { //...do something };
所以,在上面的设置中,我已经在app.js中实际执行了所有脚本
我select的是:
//1) app.js - main entry point: //======================================================= var myservice = require('./myservice'), rt = require('./XYZhandler'); //2) myservice.js: unchanged from above //3)and finally XYZhandler.js: //======================================================= require('./myservice').register(function() { //...do that same thing };
在后面的设置中,我在XYZhandler.js中有一个脚本,在第一次requirejs遇到它的时候会被执行(请注意,XYZhandler.js不会导出任何东西)。 我(作为一个Java开发人员)将此比喻为静态初始值设定项 。 但是,上述哪一项被认为是更好的做法呢? 谢谢。
第一种方法更好,因为它是正确的分离。
在第二种方法中, XYZhandler.js
依赖于myservice.js
。 如果你的yourhandler.js
或者hishandler.js
想要register
XYZhandler.js
,那么它们也必须被硬编码。很快,你所有的模块都将相互依赖,你将不会有任何单独重用它们的能力,这就是将这些function抽象为模块的完整点。
这是一个化妆品的差异,但我可能会这样写你的第一个例子:
//1) app.js - main entry point: //======================================================= var myservice = require('./myservice'); var myhandler = require('./XYZhandler').handler; rt.register('someKey', myhandler);
一步载入模块,然后初始化它们,帮助我澄清它们之间的关系。
希望有所帮助!
- 有了Facebook的EventEmitter,有没有办法让迟到的听众收到已经发出的事件?
- 用户input – Javascript节点js
- $ locationProvider html5mode导致“无法GET”错误刷新 – AngularJS节点的应用程序
- Sails.js节点服务器req.session始终为空,使用Passport-local策略。
- 在常规生产用例中使用server.inject – 坏主意或好主意?
- inheritanceSails.js模型的属性和生命周期函数
- 从表单上传文件中读取文件内容
- 使用(substack's)磁带模块进行testing时,如何在文件中只运行一个testing?
- 使用Gulp将资产上传到s3