Я использую смесь требуемых (как в ответе @Hinrich) и global.someNamespaceName.anInstance
.
В общем, я использую global.someNamespaceName.anInstance
для обозначения объекта , т.е. конкретного экземпляра класса, таких как конкретное соединение базы данных или конкретной конфигурация приложения. Например, в основной код инициализации приложения, что-то вроде
var config = { lots of config stuff, e.g. .mongoURI, .port, .loggerFormat, .prefs, ... }
...
global.myAppName.config = config ;
global.myAppName.myMongo = new MyMongo(config.mongoURI);
global.myAppName.mySQL = new MySQL(config.mySQLSettings);
Я использую требует в основном для «типичных» узлов иш вещей и стандартных библиотек, т.е. var QueryString = require('querystring');
Это «кажется правильным» для мое мышление, но не знаю, существуют ли какие-то конкретные рекомендации, и в любом случае все в порядке. Преимущество global.xxx заключается в том, что вы можете избежать множества требований в начале каждого файла, и заказ может быть проблемой.
Два возможных недостатков использования global.myAppName.someOtherName:
- пространство имен столкновений. Не должно быть проблем, если у вас нет большого проекта и нескольких программистов, которые не общаются. И это то, что может произойти с необходимостью тоже ...
- Для поиска объекта требуется два поиска (.myAppName и .someOtherName). Это будет крайне незначительный удар производительности. Если вы ссылаетесь на элемент тысячи раз в цикле, кешируйте его в локальной переменной.
Глобализация модулей - не очень хорошая идея, потому что это может испортить ваши переменные. [здесь] (http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm) для некоторого базового введения. пожалуйста, покажите какой-нибудь код, если мы поможем вам практиковать по вашим вопросам. – Hinrich
Я глобализую только контроллеры, которые содержат функции внутри этих модулей, можете ли вы сказать мне лучший способ? – Zeeshan
Можете ли вы показать свой код, пожалуйста? – Hinrich