1

我想确保在使用模块时遵循正常的约定。

我像不进行导出一样正常编写代码,然后用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) {
        ...
    }

    ...

}
4

1 回答 1

4

在您的示例中,您似乎正在导出一个函数,它看起来像一个快速服务器。由于您的代码段中的该模块不导出任何内容,因此不需要包装函数。通常,您会看到server.js运行快速服务器的类型文件作为没有提及module.exports. 它们只有在您运行时执行的顶级代码node server.js,这很好。

如果由于某种原因您希望能够拥有一个单独的模块,则需要此模块并通过函数调用启动它,例如:

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

那么你所拥有的就可以了,但是我尝试保持我的源代码部分与 CommonJS 扩展密切相关,我相信随着 ECMAScript 6 的采用,它会失宠,仅限于require顶部的孤立语句,module.exports配置位于底部和文件中间的纯 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;

在我看来,它是等效的,只是更整洁一些。

于 2013-09-02T05:32:43.410 回答