У меня есть файл конфигурации (упрощенный ниже) для приложения Node.jsЛучший способ использовать файл конфигурации в Node.js
module.exports = function(){
var settings = {
port: '8088'
};
settings.mysql = {
host : 'localhost',
database : 'test'
};
// Override default settings
switch(process.env.NODE_ENV){
case 'production':
settings.port = 8082;
break;
case 'staging':
settings.port = 8083;
break;
}
return settings;
};
Когда я начинаю мое приложение Express.js я требую этого файла для некоторых базовые настройки:
var Config = require('./config'), settings = new Config();
var port = process.env.PORT || settings.port; // set our port
Мне также необходимо использовать настройки MySQL в этом файле позже в DAO (в моей модели). В этот момент я называю конфигурационный файл (который будет запускать его снова)
var Config = require('../config'), settings = new Config();
var mysql = require('mysql');
var pool = mysql.createPool(settings.mysql);
Очевидно каждый раз, когда я «требуется» файл получает работать, это просто кажется ленивым/неэффективным. Должен ли я хранить возвращаемую переменную в глобальной переменной, которую может видеть мой DAO, или мне нужно передать ее ссылкой?
Я в какой-то момент подумал о том, чтобы сделать это промежуточным программным обеспечением и добавить его в ЗАПРОС, но тогда мне понадобится мой маршрут (контроллер), чтобы передать его в DAO (модель), который не чувствует себя хорошо.
Я не знаю, как кэш-память работает точно (и я слишком ленив, чтобы проверить прямо сейчас), но я не удивлюсь, если он работал даже с функцией, так как это, вероятно, 'модуль 'который кэшируется. – jcaron
Проблема, скорее всего, связана с разным путем, но не уверен, что узел канонизирует пути (до полного пути) или использует его как есть. – jcaron
@jcaron - Я бы предположил, что функция, вероятно, будет кэшироваться, но все равно кажется глупым повторять ее каждый раз, чтобы получить тот же результат. Но вы правы, я не уверен на 100%, как кеширование взаимодействует с разными относительными путями, мне нужно будет изучить это! –