Как использовать переменные среды в Vue.js
Введение
В веб-приложении вам, скорее всего, придется обращаться к внутреннему серверу API через URL-адрес. В среде разработки — когда вы работаете локально, этот URL-адрес может выглядеть примерно так: http://localhost:8080/api
. В производственной среде — когда проект развернут, этот URL-адрес может выглядеть примерно так: https://example.com/api
. Переменные среды позволяют автоматически изменять этот URL-адрес в соответствии с текущим состоянием проекта.
С Vue.js можно использовать переменные среды через файлы с расширением .env
. Эти файлы отвечают за хранение информации, относящейся к среде («разработка», «тестирование», «производство» и т. д.).
В этой статье вы узнаете, как работать с различными конфигурациями между режимами разработки и производства для проектов Vue.js с использованием Vue CLI 3+ и 2.
Предпосылки
Чтобы следовать этой статье, вам понадобятся:
- Node.js установлен локально, что можно сделать, следуя инструкциям по установке Node.js и созданию локальной среды разработки.
- Некоторое знакомство с настройкой проекта Vue.js.
Это руководство было проверено с помощью Node v15.1.0, npm
v6.14.8, Vue.js v2.6.12, TypeScript v3.9.3, @vue/cli
v4.5.8 и vue-cli
v2.9.6.
Шаг 1 — Использование файлов .env с Vue CLI 3+
Vue CLI 4 — это текущая версия @vue/cli
. Создав проект Vue.js, вы можете добавить файлы .env
и .env.production
.
В своем терминале создайте новый проект Vue.js с @vue/cli
:
- npx @vue/cli create vue-cli-env-example
Перейдите в каталог проекта;
- cd vue-cli-env-example
В редакторе кода создайте файл .env
и добавьте следующие значения:
VUE_APP_ROOT_API=http://localhost/api
Затем с помощью редактора кода создайте файл .env.production
и добавьте следующие значения:
VUE_APP_ROOT_API=http://www.example.com/api
Примечание. Здесь важен префикс VUE_APP_
, и переменные без этого префикса не будут доступны в вашем приложении.
После создания переменной VUE_APP_ROOT_API
вы можете использовать ее где угодно в Vue через глобальный объект process.env
:
process.env.VUE_APP_ROOT_API
Например, откройте файл HelloWorld.vue
и в теге <script>
добавьте следующее:
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
},
mounted() {
console.log(process.env.VUE_APP_ROOT_API)
},
}
</script>
Если вы скомпилируете приложение со значениями разработки:
- npm run serve
Эта команда будет использовать значение .env
, и журнал консоли будет отображать: http://localhost/api
.
Если вы скомпилируете приложение с производственными значениями:
- npm run serve -- --mode=production
Примечание. Здесь важно использовать двойные дефисы для передачи флагов из npm
в vue-cli-service
.
Вы также можете использовать эту альтернативную команду:
- vue-cli-service serve --mode=production
Эта команда будет использовать значение .env.production
, и журнал консоли будет отображать: http://www.example.com/api
.
По умолчанию Vue CLI поддерживает три режима: «разработка», «тестирование» и «производство». Для получения дополнительной информации об использовании переменных среды с Vue CLI 3 обратитесь к официальной документации.
Шаг 2 — Использование файлов .env с Vue CLI 2
Vue CLI 2 — это предыдущая версия vue-cli
. Создав проект Vue.js, вы можете использовать
В своем терминале создайте новый проект Vue.js с помощью vue-cli
:
- npx vue-cli init webpack vue-cli-two-env-example
В каталоге config
есть два файла: dev.env.js
и prod.env.js
.
Эти файлы используются в режиме разработки и производства. Когда вы запускаете приложение с помощью команды npm run dev
, используется файл dev.env.js
. Когда вы компилируете проект для производства с помощью команды npm run build
, вместо этого используется файл prod.env.js
.
Откройте dev.env.js
в редакторе кода и добавьте значение ROOT_API
:
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
ROOT_API: '"http://localhost/api"'
})
Затем откройте prod.env.js
в редакторе кода и добавьте значение ROOT_API
:
'use strict'
module.exports = {
NODE_ENV: '"production"',
ROOT_API: '"http://www.example.com/api"'
}
После создания переменной ROOT_API
вы можете использовать ее в любом месте Vue через глобальный объект process.env
:
process.env.ROOT_API
Например, откройте файл HelloWorld.vue
и в теге <script>
добавьте следующее:
<script>
export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
},
mounted() {
console.log(process.env.ROOT_API)
},
}
</script>
Если вы скомпилируете приложение с помощью:
- npm run dev
Эта команда будет использовать значение dev.env.js
, а журнал консоли будет отображать: http://localhost/api
.
Если вы скомпилируете приложение с помощью:
- npm run build
Эта команда будет использовать значение prod.env.js
и сгенерирует приложение в каталоге dist
. Перейдите в этот каталог и убедитесь, что значение process.env.ROOT_API
использует http://www.example.com/api
вместо http://localhost. /апи
.
Вы можете работать с разными переменными для каждой отдельной среды, используя готовую конфигурацию dotenv для управления переменными среды.
Заключение
В этой статье вы узнали, как использовать переменные среды в проектах, созданных с помощью Vue CLI 3+ и 2.
Для текущих и будущих проектов рекомендуется использовать @vue/cli
в будущем, так как vue-cli
устарел.
Если вы хотите узнать больше о Vue.js, посетите нашу тематическую страницу Vue.js, где вы найдете упражнения и проекты по программированию.