Node.js模块正确的使用

当我使用模块时,我想确保遵循正常的惯例。

我通常写代码,如果我不做出口,然后用module.exports {…}包装整个文件;
它的工作,但我只是想确保我没有做的事情会让我被解雇。 这感觉太简单了,没有正确的…我是在想这个吗?

module.exports=function() { var express=require('express'); var app=express(); app.use(express.static(__dirname+'/root')); var clientCount=0, currentid=0; var players=new Array(); app.get('/login/*', function(request, response) { ... } ... } 

在你的例子中,它看起来像你正在导出一个单一的function,看起来像一个快递服务器。 由于代码片段中的模块不会导出任何内容,因此不需要包装函数。 通常你会看到运行express服务器的server.jstypes文件作为没有提及module.exports主要入口点程序。 他们只有在运行node server.js时执行的顶级代码,这很好。

如果由于某种原因,你希望能够有一个单独的模块需要这个模块,并启动一个函数调用,如:

 var server = require('./server'); server(); //call the function to start the express server 

然后,你有什么好的,但我试图保持我的源代码与CommonJS扩展密切相关的部分,因为ECMAScript 6获得采用,我相信这将不受欢迎,限于在module.exports顶部的孤立的require声明module.exportsconfiguration在底部,只是纯粹的JavaScript(没有CommonJS的东西)在文件的中间。 我更喜欢这种模式:

 //CommonJS require statements var express = require('express')(); //main module body code. Pure JS. No CommonJS pollution. function setup() { ... } //CommonJS exports stuff module.exports = setup; 

这是相当的,在我看来,整洁一点。