Хранилище с открытым исходным кодом Xinbee Mall (открытый исходный код торгового центра H5, содержащий Vue 2.x и Vue 3.x, с интерфейсом API на стороне сервера):github.com/newbee-ltd
Vue 3.x + Vant 3.x + Vue-Router 4.x Высокая имитация учетной записи WeChat с открытым исходным кодом (с API-интерфейсом сервера):GitHub.com/Nick930826/…
предисловие
环境变量
Концепция (переменных среды) незаметно вошла в видение фронтенда, когда фронтенд-инжиниринг стал популярным. В древнем интерфейсе не было концепции проектирования, а среда разработки, среда тестирования и среда генерации настраивались вручную всеми. и сейчасwebpack
,snowpack
,rollup
Когда упаковочные инструменты становятся популярными, мы должны обратить на это внимание. В целой цепочке современной front-end разработки,环境变量
Играет роль концентратора конфигурации проекта.По моему скромному мнению, я не люблю распыляться по мелочам.
Переменные среды в различных инструментах построения лесов
На фасаде есть различные инструменты для строительных лесов, такие какVue CLI
,UmiJS
,Vite
,create-react-app
,Nuxt.js
,Next.js
Подождите, я думаю как фронтенд разработчик, я соприкасался с одним-двумя из вышеперечисленных инструментов.Если вы продвинутый игрок, вам не нужно читать дальше, потому что, читая документацию и собственные эксперименты , вы можете узнать, как получить переменные среды с помощью этих инструментов формирования шаблонов. А вот для начинающего фронтенда, который стремится построить среду разработки фронтенд проекта от 0 до 1, эту статью можно внимательно посмотреть, возможно, она будет вам полезна.
Vue CLI
должен сначала увидетьофициальная документация, не придумывайте и не запускайте все это во многих конфигурациях есть внутренние соглашения, так что не возитесь. В документации четко указано, что есть три режимаdevelopment
,test
,production
, которые представляют разработку, тестирование и производство соответственно.
Это можно установить в командной строке следующим образом:
"scripts": {
"serve": "vue-cli-service serve",
"build:beta": "vue-cli-service build --mode development",
"build:release": "vue-cli-service build --mode production",
"lint": "vue-cli-service lint"
}
соответствие имени файлаmode
конфигурация, когда вы запускаете командуnpm run build:beta
Когда вы можете попасть в страницу.env.development
переменные, которые установлены внутри, следующим образом:
<template>
<img alt="Vue logo" src="./assets/logo.png">
</template>
<script>
export default {
name: 'App',
setup() {
console.log('env', process.env)
}
}
</script>
Здесь следует уделить особое внимание Vue CLI должен использовать производственный режим при упаковке производственной среды, потому что, когда внутренний веб-пакет собирает код, он будет выбирать разные сценарии сборки в соответствии с NODE_ENV, а производственная среда определенно будет выполнять большую оптимизацию. , так что помните.
С помощью переменных среды некоторые ресурсы, необходимые в тестовой среде и рабочей среде проекта, можно динамически настраивать.
Vite
Vite 2.0
Это новые строительные леса, выпущенные только в этом году, и они полны аромата. Я нашел предыдущую статью«Vite 2.0 + React + Ant Design 4.0 для создания среды разработки», есть лучший способ получить переменные среды, это то, что я получил отофициальная документациянайти в.
первыйpackage.json
Внесите следующие изменения:
"scripts": {
"dev": "vite --mode development",
"build:beta": "vite build --mode beta",
"build:production": "vite build --mode production",
"serve": "vite preview"
},
существуетvite.config.js
, можно получить в следующем видеmode
:
export default ({ mode }) => defineConfig({
...
})
На странице мы устанавливаем.env.document
,.env.beta
,.env.production
Для установки переменных соответствующего окружения файлы в трех вышеуказанных скриптах желательно иметь в следующем виде:
VITE_BASE_URL=http://www.development.baidu.com
VITE_BUILD_ENV=beta
пройти внутрь страницыimport.meta.env
Get, результат печати выглядит следующим образом:
UmiJS
Также посмотрите наофициальная документацияописание следующим образом:
Ключевые словаUMI_ENV
, вот я привожу примерconfig
Форма конфигурации , создает базуumi
проект, конфигурация следующая:
config.beta.js
Код для выглядит следующим образом:
export default {
define: {
'process.env.BUILD_ENV': 'beta'
}
}
config.release.js
Код для выглядит следующим образом:
export default {
define: {
'process.env.BUILD_ENV': 'release'
}
}
В процессе запуска проекта вы можете во внутреннем скрипте, путемprocess.env.BUILD_ENV
Получите соответствующую переменную среды. Здесь можно настроить имя переменной среды.
Nuxt.js
Относительно просто настроить переменные среды, изменитьpackage.json
Следующим образом:
"scripts": {
"dev": "NODE_ENV=development nuxt",
"build:beta": "NODE_ENV=beta nuxt build",
"build:production": "NODE_ENV=production nuxt build",
"start": "nuxt start",
"generate": "nuxt generate"
}
После настройки передать в проектprocess.env.NODE_ENV
получить, бежатьyarn dev
Результат печати следующий:
Конечно,nuxt.config.js
Внутренне может также пройтиenv
Конфигурация, я не буду вдаваться в подробности здесь.
create-react-app
В официальной документации сказано, что у него всего две среды, одна из которых — среда разработки.development
, другой - производственная средаproduction
. Затем, как добавить тестовую среду, внутренняя страница не может определить, является ли производственная среда официальной или тестовой. После некоторых поисков я нашел библиотеку инструментов -dotenv-cli
. установить его наdevDependencies
:
yarn add dotenv-cli -D
Затем мы модифицируемpackage.json
следующим образом:
"scripts": {
"start": "react-scripts start",
"build:beta": "dotenv -e .env.beta react-scripts build",
"build:production": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
вареная рыба,.env.beta
соответствующий корневой каталог.env.beta
,а такжеbuild:production
команда, значение по умолчанию соответствует.env.production
,Следующим образом:
После запуска пакета вы можете пройтиprocess.env.REACT_APP_TITLE
Получите переменную среды, конкретное значение можно настроить самостоятельно, но, пожалуйста, используйтеREACT_APP_
в начале, иначе он не будет распознан внутри. В противном случае при упаковке он будет получен по умолчанию.env.production
переменная на .
Я пытаюсь запустить проект, набрав тестовый пакет, распечататьprocess.env
Следующим образом:
Next.js
У меня больше нет с собой ББ, иди прямоpackage.json
:
"scripts": {
"dev": "BUILD_ENV=development next dev",
"build:beta": "BUILD_ENV=beta next build",
"build:production": "BUILD_ENV=production next build",
"start": "next start"
}
такой же,Next.js
Только среда разработки и производственная среда, нет разницы между формальной и тестовой, это пройденоBUILD_ENV
переменные среды, чтобы различатьbeta
а такжеproduction
. Далее настройте егоnext.config.js
:
module.exports = {
env: {
BUILD_ENV: process.env.BUILD_ENV
}
}
После этой конфигурации вы можете пройтиprocess.env.BUILD_ENV
Получите переменные среды, запустите среду разработки и распечатайте результаты следующим образом:
Суммировать
Сегодня фронтенд-инжиниринг глубоко укоренился в сердцах людей, и если вы хотите получить какие-то конкурентные преимущества на фронтенд-позициях, вы должны попытаться построить проект с 0 до 1, включая последующий запуск, оптимизацию и итерацию. . Вас всегда приютили ваши предшественники, и у вас никогда не будет существенного роста. Со временем вы начнете входить в состояние "вареных лягушек в теплой воде". Начнем с управления переменными среды. Давай.