当前位置:首页 > 技术分析 > 正文内容

在vue开发中如何利用.env文件(vue entry)

ruisui884个月前 (02-03)技术分析16

前言

我们在 vue 项目的目录中经常看到 env 开头的文件,在文件内声明一些变量,这些变量就是一些配置变量,在不同环境下可使用的变量。

# 页面标题
VITE_APP_TITLE = 管理系统

# 开发环境配置
VITE_APP_ENV = 'development'

# 管理系统/开发环境
VITE_APP_BASE_API = '/'

环境

项目的运行不止在我们敲代码的时候,还在正式使用时等等,在这些情况我们区分为有本地环境、测试环境、预生产、生产环境等等。

在这不同环境下,代码运行的情况肯定是不一样的,这个时候就需要 env 文件,来控制其中变化的情况,实现差异性配置。

env 命名

通常 env 文件命名如下:

  • .env 所有环境(开发、测试、生成等)均会加载并合并该文件。
  • .env.development 开发环境
  • .env.production 生产环境

其中.env、.env.development、.env.production 文件的命名为固定格式,不能改变,否则读取不到文件。

文件读取

package.json vue 中所需要的的依赖会根据该文件来安装。

  • scripts:支持的脚本
  • dependencies: 生产环境依赖包列表
  • devDependencies: 开发环境、测试环境依赖包列表

而在 package.json 文件中 有 scripts字段用来定义脚本命令, Vue 会根据启动命令自动加载对应的环境配置文件。其中的属性是用来运行 npm run 命令的,属性名可以随意更改;而属性的值,才是真正运行的命令,是固定的。

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build --mode development",
    "build:pro": "vue-cli-service build --mode production",
    "build:test": "vue-cli-service build --mode test",
  },

配置环境变量

该文件注释用 # 号开头,定义变量直接是 属性 = 值。

# 页面标题
VITE_APP_TITLE = 管理系统

# 环境配置
VITE_APP_ENV = 'development'

# api 基础路径
VITE_APP_BASE_API = '/dev-api'
// 或
VUE_APP_BASE_API = '/dev-api'

使用

我们知道了在不同环境下使用相应 env 文件中的变量,那么想要在项目中使用该变量要怎么做呢?

在项目中,如果我使用的是 vite ,要想在项目中使用变量的开头就需要是 VITE_,而不是 VITE_ 开头的变量就不能被获取到。

// 在 vite 程序中获取
console.log(import.meta.env.VITE_APP_BASE_API); // /dev-api
// 在 vue2 项目中获取
console.log(process.env.VUE_APP_BASE_API); // /dev-api

在 vite 中对于不支持 import.meta.env来获取变量,我们可以使用 Vite 导出的 loadEnv 函数来加载指定的 .env 文件

import { defineConfig, loadEnv } from 'vite'

export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 如果当前环境是开发环境,则 mode 为 development
  // 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。
  const env = loadEnv(mode, process.cwd(), '')
  const { VITE_APP_BASE_API } = env // VITE_APP_BASE_API = /dev-api
  return {
    // vite 配置
    define: {
      __APP_ENV__: JSON.stringify(env.APP_ENV),
    },
  }
})

总结

  • 默认情况下 .env 文件要放在和 package.json 同一目录下才可以被加载,除非在配置文件中更改加载目录。
  • 不同的环境会加载不同的 .env 文件。
  • 要想使用环境变量,变量的开头有固定要求,在 vite 项目中以 VITE_ 开头,在 vue2 项目中以 VUE_APP 开头。


原文链接:https://juejin.cn/post/7291449239498653696

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/791.html

标签: vue url传参
分享给朋友:

“在vue开发中如何利用.env文件(vue entry)” 的相关文章

一套智能停车场收费管理系统设计方案,拓扑图VISIO格式

大家好,我是薛哥。最近VIP会员群的读者咨询停车场管理系统的规划设计方案,今天分享一个模板素材,主要里面的拓扑图可以编辑的,VISIO格式,建议收藏备用。此套完整的Word方案,VIP会员下载!智能停车场收费管理子系统1、系统概述本次停车场管理系统设计纯车牌识别系统,并可在合适的位置设置中央收费点,...

vue3中父子组件之间传值的详解

首先我们回顾一下vue2中父子组件是怎么传值的,然后对比vue3进行详解。一、vue2中父子组件传值<!-- 父组件 --> <template> <div> // name:父组件把值传给子组件test-child // childFn:...

带你五步学会Vue SSR

作者:liuxuan 前端名狮转发链接:https://mp.weixin.qq.com/s/6K6GUHcLwLG4mzfaYtVMBQ前言SSR大家肯定都不陌生,通过服务端渲染,可以优化SEO抓取,提升首页加载速度等,我在学习SSR的时候,看过很多文章,有些对我有很大的启发作用,有些就只是照搬官...

79.idea中git合并分支操作分享

文章目录前言1.fetch的操作2.合并最新代码到当前的开发分支3.解决冲突4.分支合并:5.完成代码合并总结前言git的操作在日产的工作中也非常重要,团队化的代码管理,每次如果代码被别人覆盖或者自己的代码不能提交到服务器那是灾难性的结果,本篇进行一篇分享来总结下idea中git的操作帮助java开...

「Git迁移」三行命令迁移Git包含提交历史,分支,tag标签等信息

问题描述:公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中,其中需要包含全部的提交纪录,已有的全部分支与全部打tag标签,目前此工作已全部迁移完毕,特此记录一下操作步骤环境描述:1. 要迁移的远程Git:Gitblit2. 迁移目的Git:Gitlab3. 暂存代码的P...

面试被逼疯:聊聊Python Import System?

面试官一个小时逼疯面试者:聊聊Python Import System?对于每一位Python开发者来说,import这个关键字是再熟悉不过了,无论是我们引用官方库还是三方库,都可以通过import xxx的形式来导入。可能很多人认为这只是Python的一个最基础的常识之一,似乎没有可以扩展的点了,...