把其他的逻辑放在server.js文件中

我有server.js文件,这是我的节点应用程序的起点,也负责调用3个不同的function(这个function只是调用一次,当服务器启动,像创buildchildProcess,validaton等function)这是好的。

我的问题是

  1. 我应该把这个逻辑(下面的3个函数)放在控制器文件夹中的不同文件中,或者将其保存在server.js文件(SOC?)上?
  2. 如果我把这些函数调用在不同的文件(在控制器文件夹中),我应该通过事件调用这些函数(如事件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 }; 

你完成了