当前位置: 首页 > news >正文

vue中.env文件是什么,在vue2和vue3中的区别

在 Vue 项目中,.env 文件用于管理不同环境(如开发、生产)的配置变量。通过这些文件,开发者可以实现环境隔离和配置与代码分离,避免将 API 地址、调试开关等硬编码到源码中。

一、差异对比表

功能点Vue2 (Vue CLI)Vue3 (Vite)
环境变量前缀VUE_APP_VITE_
访问方式process.env.VUE_APP_Ximport.meta.env.VITE_X
模式判断process.env.NODE_ENV, process.env.MODEimport.meta.env.MODE, .DEV, .PROD
类型支持需额外配置推荐 src/env.d.ts 声明
构建工具Webpack + Vue CLIVite (默认)
自定义模式支持 --mode xxx支持 --mode xxx

二、不同 .env 文件的区别与作用

Vue 项目支持多种命名的 .env 文件,它们根据 运行模式 (mode) 和 优先级 被加载。以下是常见的几种文件及其用途:

文件名加载条件是否需要提交到Git用途说明
.env所有环境都加载✅ 是全局默认配置,所有环境共用的基础变量
.env.local所有环境都加载❌ 否本地覆盖配置(不应提交),用于个人开发环境定制
.env.[mode](如 .env.development, .env.production)只有匹配 mode 时才加载✅ 是特定环境的配置(如 dev 环境 API 地址)
.env.[mode].local(如 .env.development.local)匹配 mode 且本地存在时加载❌ 否特定环境的本地敏感配置(如本地测试密钥)

📌 加载优先级(后加载的会覆盖前面同名变量)
.env → .env.local → .env.[mode] → .env.[mode].local

  • 开发时 (npm run dev) → 加载 .env → 再加载 .env.development → 最后 .env.development.local
  • 构建生产包 (npm run build) → 加载 .env → 再加载 .env.production → 最后 .env.production.local

三、环境变量前缀规则(Vite/Vue CLI 不监听 .env 文件变化,改完必须重启项目)

  • Vite (主流于 Vue3)

    必须以 VITE_ 开头才能通过 import.meta.env 访问 VITE_API_URL=http://localhost:3000
    # .env.development 文件
    VITE_API_URL=https://dev.api.example.com
    VITE_DEBUG=true# .env.production 文件
    VITE_API_URL=https://api.example.com
    VITE_DEBUG=false
    
  • Vue CLI (常用于 Vue2)

    必须以 VUE_APP_ 开头才能暴露给客户端 VUE_APP_API_URL=http://localhost:8080
    # .env.development 文件
    VUE_APP_API_URL=https://dev.api.example.com
    VUE_APP_DEBUG=true# .env.production 文件
    VUE_APP_API_URL=https://api.example.com
    VUE_APP_DEBUG=false
    

四、如何使用环境变量?

  • Vue3 + Vite

    • 在 vite.config.js 中使用
      import { defineConfig } from 'vite'export default defineConfig({base: import.meta.env.VITE_APP_ROUTER_BASE, // 设置公共路径server: {port: Number(import.meta.env.VITE_PORT)   // 注意类型转换}
      })
      
    • 在代码中读取
      // main.js 或任何组件中
      console.log(import.meta.env.VITE_API_URL);     // 输出 API 地址
      console.log(import.meta.env.MODE);             // 当前模式,如 'development'
      console.log(import.meta.env.DEV);              // 是否是开发环境 (true/false)
      console.log(import.meta.env.PROD);             // 是否是生产环境 (true/false)
      
    • 注意:.env 中的所有值都是字符串类型,需要手动转为布尔或数字:
      const isDebug = import.meta.env.VITE_DEBUG === 'true';
      const port = Number(import.meta.env.VITE_PORT);
      
  • Vue CLI + Webpack

    • 在 vite.config.js 中使用
      const { VUE_APP_API_URL, VUE_APP_PORT } = process.env;module.exports = {devServer: {port: parseInt(VUE_APP_PORT, 10),proxy: {'/api': {target: VUE_APP_API_URL,changeOrigin: true,},},},
      };
      
    • 在代码中读取
      // main.js 或任何组件中
      console.log(process.env.VUE_APP_API_URL); // 输出: https://dev.api.example.com
      console.log(process.env.VUE_APP_DEBUG);   // 输出: true (字符串)
      console.log(process.env.NODE_ENV);        // 输出: development 或 production
      
    • 注意:.env 中的所有值都是字符串类型,需要手动转为布尔或数字:
      const isDebug = process.env.VUE_APP_DEBUG === 'true';
      const port = Number(process.env.VUE_APP_PORT);
      

五、注意事项

  • 不要存储敏感信息

    • 所有以 VITE_ 或 VUE_APP_ 开头的变量都会被打包进前端代码,用户可通过浏览器查看。
    • 不要放 API 密钥、数据库密码、私钥等,敏感信息应由后端服务管理。
  • .gitignore 中排除本地文件

    .env.local
    .env.*.local
    

六、结论:

  • 多个 .env 文件是为了实现 多环境差异化配置。
  • Vue3 使用 Vite 后,语法从 process.env 变为 import.meta.env,前缀也变为 VITE_。
  • 核心思想不变:配置分离、安全暴露、便于维护。
http://www.dtcms.com/a/406280.html

相关文章:

  • ADMM 算法的基本概念
  • Vue中如何封装双向绑定的组件
  • 个人网站建设与维护上传wordpress到空间
  • 深入剖析Spring Boot依赖注入顺序:从原理到实战
  • 对象关系映射(ORM)
  • 在VS Code 中为Roo Code 添加 Bright Data 的本地MCP服务器
  • 专业的制作网站开发公司wordpress界面404
  • Python Pillow库详解:图像处理的瑞士军刀
  • AI 时代的安全防线:国产大模型的数据风险与治理路径
  • Deepoc具身智能模型:为传统机器人注入“灵魂”,重塑建筑施工现场安全新范式
  • 鸿蒙NEXT安全控件解析:实现精准权限管控的新范式
  • 创建自己的网站广告图片
  • GraphRAG:引领自然语言处理进入深层语义分析新纪元
  • 免费的个人简历电子版seo怎么优化排名
  • 5、urbane-commerce 微服务统一依赖版本管理规范
  • 17.DHCP服务器及DNS服务
  • 如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包)
  • 响应式网站内容布局网站开发团队成员介绍
  • PaintBoard+cpolar:云端画板的远程创作方案
  • 9月25日星期四今日早报简报微语报早读
  • 零基础学AI大模型之AI大模型可视化界面
  • 深圳建设工程项目网站沈阳网站模板建站
  • (二)3.1.9 生产“稳”担当:Apache DolphinScheduler Worker 服务源码全方位解析
  • Linux-01(Linux 基础命令)
  • 苹果群控系统的游戏运营
  • 英迈思做的网站怎么样建设网站时 首先要解决两个问题 一是什么
  • 风险网站如何解决办法关于加强公司 网站建设的通知
  • 7、revision 是 Maven 3.5+ 引入的现代版本管理机制
  • Maven入门:高效构建Java项目
  • Hadess入门到实战(2) - 如何管理Maven制品