Search K
Appearance
Appearance
📊 SEO元描述:2024年最新Vue环境变量配置教程,详解.env文件、多环境配置、环境变量使用。包含完整配置案例,适合Vue.js开发者掌握项目环境管理。
核心关键词:Vue环境变量 2024、Vue .env配置、Vue多环境配置、Vue CLI环境变量、Vite环境变量、Vue项目配置
长尾关键词:Vue环境变量怎么配置、Vue .env文件使用、Vue多环境部署、Vue环境变量管理、Vue配置文件详解
通过本节Vue环境变量配置,你将系统性掌握:
环境变量是什么?这是项目配置管理的核心概念。环境变量是在不同运行环境中可以动态改变的配置值,也是现代应用部署的重要组成部分。
💡 学习建议:环境变量是现代前端开发的基础技能,建议从基础概念开始,逐步掌握高级用法
Vue CLI支持多种.env文件:
# 🎉 Vue CLI环境变量文件优先级(从高到低)
.env.local # 本地环境(被git忽略)
.env.[mode].local # 指定模式的本地环境
.env.[mode] # 指定模式环境
.env # 默认环境# 🎉 .env文件示例
# 应用标题
VUE_APP_TITLE=我的Vue应用
# API基础URL
VUE_APP_API_BASE_URL=http://localhost:3000/api
# 应用版本
VUE_APP_VERSION=1.0.0
# 是否启用调试
VUE_APP_DEBUG=true
# 第三方服务配置
VUE_APP_GOOGLE_ANALYTICS_ID=GA-XXXXXXXXX# 🎉 .env.development
NODE_ENV=development
VUE_APP_TITLE=开发环境 - 我的应用
VUE_APP_API_BASE_URL=http://localhost:3000/api
VUE_APP_DEBUG=true
VUE_APP_LOG_LEVEL=debug
VUE_APP_MOCK_ENABLED=true# 🎉 .env.test
NODE_ENV=test
VUE_APP_TITLE=测试环境 - 我的应用
VUE_APP_API_BASE_URL=https://test-api.example.com
VUE_APP_DEBUG=true
VUE_APP_LOG_LEVEL=info
VUE_APP_MOCK_ENABLED=false# 🎉 .env.production
NODE_ENV=production
VUE_APP_TITLE=我的应用
VUE_APP_API_BASE_URL=https://api.example.com
VUE_APP_DEBUG=false
VUE_APP_LOG_LEVEL=error
VUE_APP_MOCK_ENABLED=false# 🎉 .env.staging
NODE_ENV=production
VUE_APP_TITLE=预发布环境 - 我的应用
VUE_APP_API_BASE_URL=https://staging-api.example.com
VUE_APP_DEBUG=false
VUE_APP_LOG_LEVEL=warn
VUE_APP_MOCK_ENABLED=false// 🎉 在JavaScript中使用环境变量
console.log('应用标题:', process.env.VUE_APP_TITLE)
console.log('API地址:', process.env.VUE_APP_API_BASE_URL)
console.log('当前环境:', process.env.NODE_ENV)
// 条件判断
if (process.env.VUE_APP_DEBUG === 'true') {
console.log('调试模式已启用')
}
// 配置对象
const config = {
apiBaseUrl: process.env.VUE_APP_API_BASE_URL,
debug: process.env.VUE_APP_DEBUG === 'true',
version: process.env.VUE_APP_VERSION
}<template>
<div>
<h1>{{ appTitle }}</h1>
<p>版本: {{ appVersion }}</p>
<p v-if="isDebug">调试模式</p>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
appTitle: process.env.VUE_APP_TITLE,
appVersion: process.env.VUE_APP_VERSION,
isDebug: process.env.VUE_APP_DEBUG === 'true'
}
}
}
</script>// 🎉 在Composition API中使用环境变量
import { ref, computed } from 'vue'
export default {
setup() {
const apiBaseUrl = ref(process.env.VUE_APP_API_BASE_URL)
const isProduction = computed(() => {
return process.env.NODE_ENV === 'production'
})
const debugMode = computed(() => {
return process.env.VUE_APP_DEBUG === 'true'
})
return {
apiBaseUrl,
isProduction,
debugMode
}
}
}# 🎉 Vite环境变量命名(以VITE_开头)
VITE_APP_TITLE=我的Vite应用
VITE_API_BASE_URL=http://localhost:3000/api
VITE_APP_VERSION=1.0.0
VITE_DEBUG_MODE=true// 🎉 Vite项目中使用环境变量
console.log('应用标题:', import.meta.env.VITE_APP_TITLE)
console.log('API地址:', import.meta.env.VITE_API_BASE_URL)
console.log('当前模式:', import.meta.env.MODE)
console.log('是否开发环境:', import.meta.env.DEV)
console.log('是否生产环境:', import.meta.env.PROD)
// 类型定义(TypeScript)
interface ImportMetaEnv {
readonly VITE_APP_TITLE: string
readonly VITE_API_BASE_URL: string
readonly VITE_APP_VERSION: string
readonly VITE_DEBUG_MODE: string
}// 🎉 config/index.js - 配置文件封装
const config = {
// 应用配置
app: {
title: process.env.VUE_APP_TITLE || '默认标题',
version: process.env.VUE_APP_VERSION || '1.0.0',
debug: process.env.VUE_APP_DEBUG === 'true'
},
// API配置
api: {
baseUrl: process.env.VUE_APP_API_BASE_URL || 'http://localhost:3000/api',
timeout: parseInt(process.env.VUE_APP_API_TIMEOUT) || 10000
},
// 第三方服务配置
services: {
googleAnalyticsId: process.env.VUE_APP_GOOGLE_ANALYTICS_ID,
sentryDsn: process.env.VUE_APP_SENTRY_DSN
},
// 功能开关
features: {
mockEnabled: process.env.VUE_APP_MOCK_ENABLED === 'true',
logLevel: process.env.VUE_APP_LOG_LEVEL || 'info'
}
}
export default config// 🎉 utils/env.js - 环境检测工具
export const isDevelopment = process.env.NODE_ENV === 'development'
export const isProduction = process.env.NODE_ENV === 'production'
export const isTest = process.env.NODE_ENV === 'test'
export const getEnvConfig = () => {
return {
NODE_ENV: process.env.NODE_ENV,
VUE_APP_TITLE: process.env.VUE_APP_TITLE,
VUE_APP_API_BASE_URL: process.env.VUE_APP_API_BASE_URL,
VUE_APP_DEBUG: process.env.VUE_APP_DEBUG
}
}
export const logEnvInfo = () => {
if (isDevelopment) {
console.group('🔧 环境变量信息')
console.table(getEnvConfig())
console.groupEnd()
}
}# 🎉 .env.local(不提交到版本控制)
# 敏感信息放在.env.local文件中
VUE_APP_SECRET_KEY=your-secret-key
VUE_APP_DATABASE_PASSWORD=your-password
VUE_APP_THIRD_PARTY_TOKEN=your-token# 🎉 .gitignore文件配置
# 本地环境变量文件
.env.local
.env.*.local
# 日志文件
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# 编辑器目录和文件
.vscode/
.idea/
*.swp
*.swo// 🎉 环境变量验证
const requiredEnvVars = [
'VUE_APP_API_BASE_URL',
'VUE_APP_TITLE'
]
const validateEnvVars = () => {
const missing = requiredEnvVars.filter(envVar => !process.env[envVar])
if (missing.length > 0) {
console.error('❌ 缺少必需的环境变量:', missing)
process.exit(1)
}
console.log('✅ 环境变量验证通过')
}
// 在应用启动时验证
validateEnvVars()# 🎉 Dockerfile中使用环境变量
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# 构建时传入环境变量
ARG VUE_APP_API_BASE_URL
ARG VUE_APP_TITLE
ENV VUE_APP_API_BASE_URL=$VUE_APP_API_BASE_URL
ENV VUE_APP_TITLE=$VUE_APP_TITLE
RUN npm run build
EXPOSE 80
CMD ["npm", "run", "serve"]# 🎉 GitHub Actions配置示例
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
env:
VUE_APP_API_BASE_URL: ${{ secrets.API_BASE_URL }}
VUE_APP_TITLE: ${{ secrets.APP_TITLE }}通过本节Vue环境变量配置的学习,你已经掌握:
A: 检查变量名是否以VUE_APP_或VITE_开头,确认.env文件位置正确,重启开发服务器。
A: 可以通过构建时传入环境变量,或者使用配置文件在运行时动态加载配置。
A: 敏感信息不应该放在前端环境变量中,应该通过后端API获取,或使用服务端渲染。
A: 可以在代码中打印process.env对象,检查环境变量是否正确加载。
A: .env.local > .env.[mode].local > .env.[mode] > .env,后加载的会覆盖先加载的。
# 🎉 环境变量命名最佳实践
# 使用大写字母和下划线
VUE_APP_API_BASE_URL=https://api.example.com
# 按功能分组
VUE_APP_AUTH_CLIENT_ID=your-client-id
VUE_APP_AUTH_REDIRECT_URI=https://app.example.com/callback
# 使用语义化命名
VUE_APP_FEATURE_DARK_MODE_ENABLED=true
VUE_APP_ANALYTICS_TRACKING_ID=GA-XXXXXXXXX// 🎉 环境变量配置验证
const validateConfig = () => {
const errors = []
if (!process.env.VUE_APP_API_BASE_URL) {
errors.push('VUE_APP_API_BASE_URL is required')
}
if (process.env.VUE_APP_API_BASE_URL && !process.env.VUE_APP_API_BASE_URL.startsWith('http')) {
errors.push('VUE_APP_API_BASE_URL must be a valid URL')
}
if (errors.length > 0) {
console.error('❌ 配置验证失败:', errors)
throw new Error('Invalid configuration')
}
}"合理的环境变量配置是项目成功部署的关键,它让你的应用能够在不同环境中灵活运行。继续学习代理配置,掌握开发环境中的API代理设置!"