Рубрики
Uncategorized

Введение в переменные среды и как их использовать

Отделка конфигурации из приложения Фото Антуана Даутри на UNSPL … Tagged с помощью SoftwareDeplion, программирования, DevOps, JavaScript.

Отделка конфигурации из приложения

фото Антуан Даутри на Неспособный

Что такое переменные среды?

Два фундаментальных компонента любого языка компьютерного программирования — переменные и Константы Анкет Как и независимые переменные в математическом уравнении, они приобретают значения, которые изменяют результаты программы. Переменные и константы представляют уникальные местоположения памяти, содержащие данные, которые программа использует в своих расчетах. Разница между ними заключается в том, что значения переменных могут меняться во время выполнения, в то время как постоянные значения не поменяются.

А переменная среды является переменной, значение которой устанавливается вне программы, обычно благодаря функциональности, встроенной в операционную систему или микросервис. Переменная среда состоит из пары имен/значения, и любой номер может быть создан и доступен для справки в определенный момент времени.

# Meteorite dataset from Nasa Open Data Portal
REACT\_APP\_METEORITE\_LANDING\_HOMEPAGE="https://data.nasa.gov/Space-Science/Meteorite-Landings/gh4g-9sfh"
REACT\_APP\_METEORITE\_STRIKE\_DATASET="https://data.nasa.gov/resource/y77d-th95.json"

Во время инициализации приложения они загружаются в Process.env и доступ к суффиксу имени переменной среды, как показано ниже.

fetch(process.env.REACT\_APP\_METEORITE\_STRIKE\_DATASET)
.then((response) =\> {
 return response.json();
})
.then((strikesJSON) =\> {
 this.setState({ meteoriteStrikes: strikesJSON });
 this.setState({ isDataLoaded: true});
});

Во время выполнения ссылка на имя переменной среды заменяется его текущим значением. В этом случае Process.env. React \ _app \ _meteorite \ _strike \ _dataset заменяется его значением, https://data.nasa.gov/resource/y77d-th95.json .

Основным вариантом использования переменных среды является ограничение необходимости изменения и повторного переиздания приложения из-за изменений в данных конфигурации. Из примера выше, когда React \ _app \ _meteorite \ _strike \ _dataset Изменения URL -адреса. Нет необходимости в изменении исходного кода, тестировании и развертывании измененного приложения.

Изменение и выпуск кода применения является относительно сложным и увеличивает риск введения нежелательных побочных эффектов в производство. Когда URL -адрес определяется переменной среды вместо приложения, процесс изменения состоит из проверки достоверности нового URL, обновления соответствующей переменной среды с использованием команды операционной системы или обновления файла конфигурации и тестирования затронутой функции приложения (S ) для обеспечения того, чтобы приложение все еще работает, как и ожидалось.

Варианты использования переменных среды включают, но не ограничиваются данными, такими как:

  • Режим выполнения (например, производство, разработка, постановка и т. Д.)
  • Доменные имена
  • API URL/URI
  • Общедоступные и частные ключи аутентификации (защищены только в серверных приложениях)
  • Групповые почтовые адреса, такие как адреса маркетинга, поддержки, продаж и т. Д.
  • Названия учетной записи службы

Что общего, так это их значения данных изменяются редко, и логика приложения относится к ним как к константам, а не к изменчивым переменным.

Затем давайте посмотрим, как использовать переменные среды, используя собственную операционную систему, пакет NPM Dotenv и Webpack.

Переменные среды в узлах

Рисунок 1 — переменные среды ОС

Использование переменных среды в бэкэнд -приложениях зависит от команд операционной системы для определения переменной среды и ее значения. Системный администратор может определить их, используя интерфейс командной строки, но обычно это имеет смысл сделать это с помощью сценария оболочки. Переменные среды, как правило, недоступны по всему миру, они обычно специфичны для сеанса. Например, используя командную строку Linux:

setenv REACT\_APP\_METEORITE\_LANDING\_HOMEPAGE = "https://data.nasa.gov/Space-Science/Meteorite-Landings/gh4g-9sfh"

Во время выполнения Nodejs автоматически загружает переменные среды в Process.env Чтобы сделать их доступными для приложения. Например, Fetch (Process.env. React \ _app \ _meteorite \ _strike \ _dataset) .

Управление и манипулирование переменными окружающей среды отличаются от операционной системы к операционной системе. Кроме того, это зависит от разных средств микросервисов, таких как Хероку , где управляющие переменные среды выполняются с использованием панели администрирования. Благодаря этому, понимание факторов, специфичных для платформы, имеет важное значение перед использованием переменных среды в вашем приложении.

Один из способов минимизировать эти различия — использовать Cross-env Пакет NPM, который обеспечивает независимую операционную систему Posix -ПОСПОНЕРКА КАМАНА для установки переменных среды ..

Переменные среды в пакете dotenv

Поддержка использования переменных среды в фронтальных приложениях не является «вне коробкой» функции браузера или JavaScript; пакет, такой как dotenv требуется для этого. Для этой записи приложения как Frontend, так и Backend могут использовать Dotenv.

Использовать этот пакет так же просто, как,

**import** dotenv **from**'dotenv';

dotenv.config();
console.log(process.env.REACT\_APP\_METEORITE\_STRIKE\_DATASET);

Этот метод вытекает данные, перемещая их из исходного кода в переменные среды в .env файл. Добавление .env Имя файла.

Рисунок 2 — .env Использование файлов

Переменные среды в .env отформатируются как, линии, начинающиеся с #, рассматриваются как комментарии, а пустые линии игнорируются. Например,

# Meteorite dataset from Nasa Open Data Portal
REACT\_APP\_METEORITE\_LANDING\_HOMEPAGE="https://data.nasa.gov/Space-Science/Meteorite-Landings/gh4g-9sfh"
REACT\_APP\_METEORITE\_STRIKE\_DATASET="https://data.nasa.gov/resource/y77d-th95.json"

Тем не менее, многие популярные пакеты, такие как приложение Create React (React-Scripts), Gatsby, GraphQL CLI, Node Lambda и Подробнее уже включает DotEnv. Если вы уже используете один из этих пакетов, DOTENV уже может быть доступен для использования в вашем приложении. Например, приведенные выше фрагменты кода взяты из приложения, сгенерированного приложением Create React, которое требует, чтобы переменные среды были предварительно профиксированы React \ _app \ _ Анкет

В случае приложения Create React нет необходимости звонить dotenv.config () С тех пор Node \ _modules/React-Scripts/config/env.js автоматически населяет Process.env с содержимым .env Файл при запуске приложения. Для примера приложения Create React см. Meteorite Explorer Repo на GitHub.

Поскольку среда браузера не защищенных приложений должно иметь особую осторожность, чтобы не раскрывать конфиденциальную информацию, например, секреты приложения. Для получения дополнительной информации о том, как защитить фронтальные среды, ознакомьтесь с «Защита активы приложения: как защитить свои секреты».

Переменные среды в WebPack

WebPack является пучком, который преобразует, пучки или пакеты множество различных модулей, ресурсов и активов в приложении вместе для использования в браузере. Одно распространенное использование WebPack — подготовить приложение для развертывания производства. Например, создайте сценарий сборки приложения React, используя WebPack для создания каталога сборки, содержащей производственную версию приложения.

Хотя WebPack реализует поддержку для использования переменных среды, это как опция команды WebPack. Например,

webpack --env.NODE\_ENV=local

Многочисленные переменные среды поддерживаются путем указания более одной опции -ENV в команде WebPack. Они упоминаются в файлах конфигурации WebPack (например, WebPack.config.js) как env. суффикс названием переменной среды. Например, Console.log (Env. Узел \ _env) Анкет

Файлы конфигурации WebPack могут также ссылаться на переменные среды, определенные операционной системой с использованием Process.env Как и любой другой модуль JavaScript. Рассмотрим этот пример из webpack.config.prod.js в приложении Create React.

// Source maps are resource heavy and can cause out of memory issue for large source files.

const shouldUseSourceMap = process.env.GENERATE\_SOURCEMAP !== 'false';

Завершая это

» Абстракция приводит мир к более сложным, переменным отношениям; Это может извлечь красоту, альтернативные топографии, безобразие и интенсивные актуальности от кажущегося ничто. » — Джерри Сальц

Использование переменных среды является одним из методов, позволяющей упростить настройку вашего приложения путем нечасто изменения данных из вашего кода. Но как бы просто ни была этот метод, на его использование влияет такие соображения, как тип приложения (Frontend или Backend) и операционная среда (операционная система или микросервис).

Использовать переменные среды легко, но понимание их нюансов и способность эффективно и надежно использовать их является одним из факторов, который отличает опытных веб -разработчиков от неопытных разработчиков. Как и в случае с любой технологией, трюк не знает, как что -то использовать, он знает, когда использовать ее.

Оригинал: «https://dev.to/chingu/an-introduction-to-environment-variables-and-how-to-use-them-1ck0»