2015-07-15 2 views
2

В нашем приложении js узла все вызовы api находятся в server.js. Это рабочее приложение, но я не доволен каждым api, написанным в одном файле, то есть server.js. Многие примеры, связанные с приложением узла js, указывают на запись вызовов на стороне сервера в один файл с именем app.js или server.js. Чтобы достичь модульности кода, я планирую отделить api в разных файлах, таких как employee.js (транзакция данных, связанных с сотрудниками), library.js (транзакция данных, связанных с библиотекой) и т. Д. Соответствующим модулям. Не уверен, что это правильный подход, так как сервер node.js должен запускаться при вызове приложения. Итак, если api распределены по разным файлам, тогда вам нужно проверить, как запустить узел js-сервера за один снимок.Модульное программирование в узле js

Кроме того, мы интегрировали node-webkit с приложением.

Нужны предложения в этом отношении.

+0

Было бы полезно посмотреть, как вы реализуете свой код. –

ответ

1

Одна из величайших вещей в node.js - его модульная система (вы можете прочитать об этом в документах: https://nodejs.org/api/modules.html), что дает вам как каждый вариант детализации, который вы хотели бы взять, из файлов с тысячами строк в файлы, которые экспортируют только одну константу.

Так просто разделите код в файлах, module.exports = thatthingyouwanttoexport, а затем require('./it') назад в app.js. Если вы сделаете это на верхнем уровне, а не внутри какого-либо обратного вызова в app.js, то это будет сделано в самом начале вашего приложения.

Мало уловы:

  • необходимые модули кэшируются, поэтому требует его дважды не выполняет свои файлы в два раза, это может быть полезным (например, для одиночек), но это все-таки, что нужно отметить,
  • вы экспортируете только то, что вы экспортирующих, так что никаких Глобалы

Один полезный шаблон является не экспортировать функцию, которая принимает аргументы и делает инициализацию при вызове, например:

//accum.js 
var start = 0 
module.exports = function initaccum(step) { 
    return function accum() { 
     start += step; 
     return start; 
    } 
} 

//app.js 
var accum = require('./accum.js')(1); 
var http = require('http') 
http.createServer(function(req, res) { 
    res.end(accum()); 
}).listen(8080); 

Надежда это помогает.

+0

Yup, метод, в котором я реализовал, тот же. Но, забыл ответить в этом посте. Спасибо за то, что поделились своими мыслями !!!. Это определенно будет полезно для тех, кто ищет тот же вопрос. – user3220129

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