把其他的逻辑放在server.js文件中
我有server.js文件,这是我的节点应用程序的起点,也负责调用3个不同的function(这个function只是调用一次,当服务器启动,像创buildchildProcess,validaton等function)这是好的。
我的问题是
- 我应该把这个逻辑(下面的3个函数)放在控制器文件夹中的不同文件中,或者将其保存在server.js文件(SOC?)上?
- 如果我把这些函数调用在不同的文件(在控制器文件夹中),我应该通过事件调用这些函数(如事件serverIsUp …)这种方法的例子将是非常有用的
server.js看起来像下面(简称…)
http.createServer(app).listen(app.get('port'), function (err) { if (err) { console.error(err); } else { console.log('server listening on port ' + app.get('port')); } }); ... //Here it the function which is called when the server is up and running childProcess.createProcess() ; fileParser.parse(); invokeValidations();
您可以创build一个新的文件(或每个function的几个),并导出/需要该function:
在newfile.js
导出函数
exports.invokeValidations = function () { // Do something }
在server.js
您需要该文件并调用该函数
myFunctions = require('./newfile.js'); myFunctions.invokeValidations();
而对于你应该或不要,这是由你自己决定,如果function增加,我build议把它们放在单独的文件,以保持东西组织。
编辑:
要使用事件发射器,你应该创build你自己的发射器:
emitter.js
:
var EventEmitter = require('events').EventEmitter; var localEmitter = new EventEmitter(); module.exports = localEmitter;
那么你应该在server.js和你的module.js中
server.js
:
var myEmitter = require('./emitter'); myModule = require('./module'); myEmitter.on('boot', function(){ console.log('hello world !'); }); myModule.invokeValidations();
module.js
:
var myEmitter = require('./emitter'); exports.invokeValidations = function () { myEmitter.emit('boot'); // Do something };
你完成了