Module.exports vs plain json для файлов конфигурации
Я вижу несколько способов создания файлов конфигурации в Node.js. Один использует module.exports в js файле, один просто использует простой json-объект.
// config1.js
module.exports = {
config_1: "value 1",
config_2: "value 2"
}
// config2.json
{
config_1: "value 1",
config_2: "value 2"
}
Есть ли преимущества использования module.exports в файле конфигурации? В чем отличия?
Спасибо
Ответы
Ответ 1
javascript CommonJS Module
- комментарии
- условными
- и т.д. для заполнения значений по умолчанию
- для изменения конфигурации на основе NODE_ENV или аналогичного
- для поиска внешних файлов для ключей SSL, учетных данных API и т.д.
- проще иметь резервные копии и значения по умолчанию
Файл JSON
- легко анализировать и обновлять с помощью внешних инструментов
- совместим практически со всеми языками программирования.
- чистые данные, которые могут быть загружены без выполнения
- удобный для печати
- JSON может начинаться как основа, и все описанные выше элементы кода о модуле CommonJS могут жить в модуле config.js, который читает config.json как отправную точку
Таким образом, я всегда начинаю с модуля commonjs для удобства, но держу любую логику там простой. Если ваш config.js имеет ошибки и нуждается в тестах, это, вероятно, слишком сложно. ПОЦЕЛУЙ. Если я знаю, что в моей конфигурации захотят поиграть другие вещи, я буду использовать JSON файл.
Ответ 2
Спасибо @jonathan-ong, похоже, что config.js(НЕ JSON файл) работает так, как ожидалось, и я мог бы добавить некоторые комментарии.
module.exports = {
// Development Environment
development: {
database: {
host: '127.0.0.1',
login: 'dev',
password: 'dev'
}
},
// Production Environment
production: {
database: {
host: '127.0.0.1',
login: 'prod',
password: 'prod'
}
}
};
Ответ 3
У файлов js есть свои привилегии, как упоминал @Peter Lyons. Но если мне не нужно обращаться к внешним ресурсам для ключей API и т.д., Я бы предпочел JSON для файлов конфигурации.
Простая причина Мне не пришлось бы касаться моего кода только ради внесения изменений в файлы конфигурации. Я могу просто создать API для редактирования этих json файлов для добавления, обновления или удаления любой пары ключ-значение конфигурации. Даже добавьте весь новый файл конфигурации для отдельной среды с помощью API.
И используйте конфигурационный модуль для использования этих конфигураций