Конфигурация
Базовые настройки приложения
Каждое приложение, созданное в Netuno, имеет особые настройки, определяющие, как оно должно подключаться к базам данных, ключам доступа и другим фундаментальным параметрам.
Netuno использует интеллектуальную систему, которая организует эти конфигурации в соответствии со средой, в которой работает приложение: локально, на официальном сервере или в любом другом месте.
Настройки вашего приложения централизованы в папке config, расположенной в корне проекта.
Путь по умолчанию: моё-приложение/config
Среды выполнения
Внутри папки config файлы именуются в соответствии со средой, для которой они созданы. Netuno автоматически загружает только те файлы, которые соответствуют среде, выполняемой в данный момент:
-
Разработка: файлы с именем
_developmentчитаются только тогда, когда среда Netuno установлена как разработка. -
Производство: файлы с именем
_productionчитаются только тогда, когда среда Netuno установлена как производство.
Типы файлов конфигурации
Для каждой среды можно использовать два типа файлов, которые работают вместе:
JSON
_development.json_production.json
Назначение: хранение статических определений и параметров.
Пример: размещение учётных данных базы данных, URL внешних API и фиксированных конфигураций.
JS
_development.js_production.js
Назначение: выполнение логики в момент загрузки конфигурации.
Пример: динамическое изменение конфигураций или выполнение начальных задач и обработки, необходимых до полного запуска приложения.
Определение общей среды
Чтобы ваши приложения знали, какую конфигурацию использовать, нужно сообщить серверу Netuno, в каком «режиме» он работает. Эта глобальная конфигурация задаётся в одном файле в корне Netuno.
- Найдите файл глобальной конфигурации: Перейдите в корневую папку, где установлен Netuno. Найдите и откройте файл
config.js. - Найдите переменную среды: Внутри файла найдите свойство
config.env. - Задайте нужную среду: Измените значение переменной в соответствии со средой, которую хотите активировать.
Среда разработки
Используется, пока вы программируете и тестируете на своей машине.
// В файле ./config.js в корне Netuno
config.env = 'development'
Производственная среда
Используется, когда проект завершён и работает на официальном сервере для пользователей.
// В файле ./config.js в корне Netuno
config.env = 'production'
Другие среды (пользовательские)
Netuno гибок и позволяет создавать собственные имена сред, например: test, homologation или staging.
// В файле ./config.js в корне Netuno
config.env = 'test'
Конфигурация приложения должна начинаться с
_, иметь расширение.json, а также файл с расширением.js— оба для одной и той же среды.
Репозиторий Git
При использовании Git для версионирования кода приложения крайне важно обеспечить безопасность данных.
Файлы конфигурации обычно содержат конфиденциальную информацию, например пароли к базам данных, ключи приватных API и т. п. Поэтому никогда не отправляйте реальные файлы конфигурации в репозиторий.
Чтобы пароли не утекли и при этом проект оставался документированным для других разработчиков, выполните два шага:
1. Скрыть реальные файлы
В корне приложения откройте (или создайте) файл .gitignore. Добавьте пути к вашим .json-файлам конфигурации, чтобы Git полностью их игнорировал.
Пример того, что добавить в .gitignore:
config/_development.json
config/_production.json
config/_test.json
2. Пример файла конфигурации
Создайте пример файла с данными, необходимыми новым разработчикам для лёгкой настройки проекта.
- Перейдите в папку
config/вашего приложения. - Создайте файл
пример.json. - Скопируйте в него структуру вашего
_development.json, оставив только имена полей.
Вот как должен выглядеть ваш config/пример.json:
{
"database": {
"host": "ВСТАВЬТЕ_ХОСТ_ЗДЕСЬ",
"user": "ВАШ_ПОЛЬЗОВАТЕЛЬ",
"password": "ВАШ_ПАРОЛЬ"
}
}
Как получить доступ к конфигурациям в коде
После определения переменных и ключей в файлах конфигурации (например, в _development.json) вам нужно будет использовать их в логике приложения — например, при создании сервиса, который подключается к API и нуждается в сохранённом токене доступа.
В Netuno к этим конфигурациям можно получить доступ через встроенный ресурс _app.
Как получить данные
В любом коде, выполняемом сервером (например, в папке server/services/), используйте функцию _app.config() для получения значений из активного файла конфигурации.
Чтобы понять, как это связано, представьте, что в файле конфигурации (config/_development.json) вы определили следующее:
{
"имя": "Моё приложение",
"версия": 2
}
Чтобы получить значение ключа «имя» и вывести его в консоль (лог) сервера, вы бы использовали следующий код в вашем .js-сервисе:
// 1. Netuno идёт в JSON-файл, ищет ключ "имя" и берёт его значение.
// 2. Затем он сохраняет это значение в переменной JavaScript, которую мы назвали 'имяПриложения'.
let имяПриложения = _app.config().getString("имя");
// 3. Выводит содержимое нашей переменной в терминал Netuno: "Моё приложение"
_log.info(имяПриложения);
Пользовательские конфигурации
Помимо стандартных конфигураций базы данных и сервера, вы можете создавать собственные переменные конфигурации.
Это очень полезно для определения бизнес-правил, например «максимальное количество элементов на странице» или «интервал отправки писем», без необходимости менять код приложения каждый раз, когда эти правила меняются.
Эти переменные хранятся внутри блока "settings" в ваших JSON-файлах конфигурации, таких как _development.json или _production.json.
Структура JSON и видимость (публичные и приватные)
При создании конфигураций важно разделять то, что может видеть пользовательский интерфейс (фронтенд), и то, что должно оставаться защищённым только на сервере (бэкенд).
- Приватные переменные: находятся внутри блока
"settings". Доступ к ним есть только у сервера. - Публичные переменные: находятся внутри подблока
"public". Они отправляются в пользовательский интерфейс (папкуui) административной области, например при разработке дашбордов.
Пример структуры вашего .json-файла:
{
...
"settings": {
"public": {
"элементовНаСтранице": 10
},
"интервалПисем": 10
}
}
Как получить доступ к конфигурациям в коде
Способ получения этих данных зависит от того, где вы программируете:
1. На сервере / бэкенде (сервисы)
Чтобы получить доступ к общим или приватным конфигурациям, используйте ресурс _app.settings() в серверном коде (файлы .js в папке server).
// Обращается к приватной переменной "интервалПисем"
const интервалПисем = _app.settings().getInt("интервалПисем");
_log.info("Установленный интервал: " + интервалПисем);
2. В интерфейсе / фронтенде (UI)
При разработке интерфейса (файлы в папке ui) вы можете получить доступ ко всему, что определено внутри блока "public". Для этого используйте глобальный объект netuno.config.app.settings.
// Обращается к публичной переменной "элементовНаСтранице" во фронтенде
const элементовНаСтранице = netuno.config.app.settings.элементовНаСтранице;
console.log("Отображается " + элементовНаСтранице + " элементов в таблице.");
Заключение
Система конфигураций Netuno обеспечивает гибкость и структурную безопасность вашего приложения. С её помощью можно:
- Управлять несколькими средами: создавать и поддерживать различные контексты выполнения (разработка, производство и т. д.) с независимыми параметрами.
- Настраивать переменные: использовать блок
settingsдля добавления конфигураций, специфичных для вашего бизнеса. - Разделять ответственность: изолировать и защищать конфигурации, доступные только бэкенду, от тех, что должны быть доступны во фронтенде.