2013-09-02 3 views
1

Я хотел убедиться, что соблюдаю нормальное соглашение, когда использовал модули.Правильное использование модуля 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) { 
     ... 
    } 

    ... 

} 

ответ

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; 

Это, по-моему, немного немного аккуратно.

+0

Я использую этот же шаблон, выглядит так же, как шаблон плагина jquery – qodeninja

Смежные вопросы