Итак, я большой поклонник создания глобальных пространств имен в javascript. Например, если мое приложение называется Xyz я обычно есть объект XYZ, который я наполняться свойствами и вложенными объектами, для примера:NodeJS: Один объект со всеми требует, или «стандартные» пути в коде?
XYZ.Resources.ErrorMessage // = "An error while making request, please try again"
XYZ.DAL.City // = { getAll: function() { ... }, getById: function(id) { .. } }
XYZ.ViewModels.City // = { .... }
XYZ.Models.City // = { .... }
Я вроде поднял это во время работы над проектом с Нокаут, и Мне это очень нравится, потому что нет никаких диких ссылок на некоторые объекты, объявляемые в god-known-where. Все в одном месте.
Теперь. Это нормально для front-end, однако в настоящее время я разрабатываю базовый скелет для проекта, который начнется через месяц, и он будет использовать Node.
Я хотел бы, чтобы вместо всех требований в файлах .js у меня был бы один объект («XYZ»), который будет содержать все в одном месте. Например:
Вместо:
// route.js file
var cityModel = require('./models/city');
var cityService = require('./services/city');
app.get('/city', function() { ...........});
Я хотел бы сделать объект:
XYZ.Models.City = require('./models/city');
XYZ.DAL.City = require('./services/city');
И использовать его как:
// route.js file
var cityModel = XYZ.Models.City;
var cityService = XYZ.DAL.City;
app.get('/city', function() { ...........});
Я действительно не имеют доходы но все необходимые требования кэшируются и обслуживаются, если они кэшированы, из памяти, поэтому повторное требование в нескольких файлах не является проблемой.
Это нормально, или я должен придерживаться стандартной процедуры ссылок на зависимости?
Редактировать: Я забыл сказать, будет ли этот шаблон фабричного блока блокировать основной поток или задерживать запуск сервера? Мне просто нужно знать, каковы недостатки ... Я не против необходимости в коде, но я просто переименовал одну папку и должен был пройти через пять файлов, чтобы изменить пути ... Что действительно неудобно.
Хм. Интересно. Так что если в server.js или что-то, что он назвал, я называю «globals.XYZ = require (« my-monstrous-object »)», он будет повторяться несколько раз? – skafander
Что значит «несколько экземпляров»? Он назначит 'my-monstrous-object'модуль' globals.XYZ'. –
О, так что вы подразумеваете под «сервером от модулей каждый раз»? – skafander