• vue-cli3.0--多环境构建(模式和环境变量)--使用/实例


    原文网址:vue-cli3.0--多环境构建(模式和环境变量)--使用/实例_IT利刃出鞘的博客-CSDN博客

    简介

    说明

            本文用实例介绍如何用vue-cli3.0配置多环境。

            本文介绍的方法适用于vue-cli的这些版本:@vue/cli3.0,@vue/cli4.0。

    官网网址

    https://cli.vuejs.org/zh/guide/mode-and-env.html

    多环境的场景

            实际项目中会有不同的环境:开发、测试、预发、生产。每一个环境可能都会有所差异,比如:服务器地址、接口地址、websocket地址等等。在各个环境切换的时候,就需要不同的配置参数,所以就可以用环境变量和模式,来方便我们管理。要请求的后端接口地址(域名+端口)是不一样的,这时就要每个环境单独配置。

    模式

    简介

    模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:

    1. development 模式:用于 vue-cli-service serve
    2. test 模式:用于 vue-cli-service test:unit
    3. production 模式:用于 vue-cli-service build 和 vue-cli-service test:e2e

            可以通过--mode参数来修改默认模式。例如,在构建命令中使用开发环境变量:

    vue-cli-service build --mode development

            运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件不包含 NODE_ENV 变量,它的值将取决于模式。例如,在 production 模式下被设置为 "production",在 test 模式下被设置为 "test",默认模式是 "development"。

    NODE_ENV

            NODE_ENV 决定应用运行的模式,比如:是开发、生产还是测试,因此决定了创建哪种 webpack 配置。

            例如:设置 NODE_ENV = "test",Vue CLI 会创建一个优化过的、用于单元测试的 webpack 配置,它不会处理图片以及单元测试非必需的资源。

            同理,NODE_ENV=development 创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是在开发时快速重新构建。

            运行 vue-cli-service build 命令时,无论要部署到哪个环境,应该始终把 NODE_ENV 设置为 "production" 来获取可用于部署的应用程序。

            如果在环境中有默认的 NODE_ENV,应该移除它或在运行 vue-cli-service 命令时明确地设置 NODE_ENV。

    环境变量

    配置文件

    可以在你的项目根目录中放置下列文件来指定环境变量:

    • .env
      • 配置所有情况下都会用到的配置
    • .env.local
      • 配置所有情况下都会用到的配置,但会被 git 忽略
    • .env.[mode]
      • 配置对应某个模式下的配置
      • 比如:.env.development 可以配置开发环境的配置。
    • .env.[mode].local
      • 配置对应某个模式下的配置,但会被 git 忽略
      • 比如:.env.development 可以配置开发环境的配置。

            如果不同文件存在同名的环境变量,保留高优先级文件中的值。优先级为:.env.[mode].local > .env.[mode] > .env.local > .env

    环境变量的使用

    简介

    一个环境文件只包含环境变量的“键=值”对,例如:

    1. FOO=bar
    2. VUE_APP_NOT_SECRET_CODE=some_value

    使用方式

    在项目的不同地方使用,限制不一样。 具体如下:

    1. 在项目中,也就是src中使用
      1. 必须以VUE_APP_开头。
        1. 例如:在main.js中直接输出:console.log(process.env.VUE_APP_KEY1)
      2. NODE_ENV
        1. 环境:"development"、"production" 或 "test" 中的一个。具体的值取决于应用运行的模式。
      3. BASE_URL
        1. 和 vue.config.js 中的 publicPath 选项相符。即应用会部署到的基础路径。
    2. 在webpack配置中使用
      1. 没什么限制,可直接通过process.env.XXX使用
    3. 在public/index.html中以插值方式使用
      1. 详见:HTML 插值

    解析环境文件规则的原理

    https://github.com/motdotla/dotenv#rules

    注意

    1. 不要在应用程序中存储任何机密信息(例如私有 API 密钥)!
    2. 环境变量会随着构建打包嵌入到输出代码,意味着任何人都有机会能够看到它。
    3. 只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 开头的变量会通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。这是为了避免意外公开机器上可能具有相同名称的私钥。
      1. 嵌入的含义:在客户端代码中可以访问到这些环境变量。比如可以这样获取变量:console.log(process.env.VUE_APP_KEY1)

    实例

    1.创建项目

    见:@vue/cli4--使用图形化界面创建项目--方法/实例_IT利刃出鞘的博客-CSDN博客

    本处创建的项目为:demo_vue-cli4。创建完后如下图所示:

    package.json

    1. {
    2. "name": "demo_vue-cli4",
    3. "version": "0.1.0",
    4. "private": true,
    5. "scripts": {
    6. "serve": "vue-cli-service serve",
    7. "build": "vue-cli-service build",
    8. "lint": "vue-cli-service lint"
    9. },
    10. "dependencies": {
    11. // 省略
    12. },
    13. "devDependencies": {
    14. // 省略
    15. }
    16. }

    2.创建环境变量文件

    在项目根目录创建文件,文件名为:.env,.env.develop

    .env

    空白,什么都不写

    .env.develop

    1. NODE_ENV='develop'
    2. VUE_APP_ENV_INFO='这是develop环境'

    3.添加模式(修改package.json)

    在"scripts"里添加一项: "develop": "vue-cli-service serve --mode develop"

    添加后如下所示:

    1. {
    2. "name": "demo_vue-cli4",
    3. "version": "0.1.0",
    4. "private": true,
    5. "scripts": {
    6. "serve": "vue-cli-service serve",
    7. "build": "vue-cli-service build",
    8. "lint": "vue-cli-service lint",
    9. "develop": "vue-cli-service serve --mode develop"
    10. },
    11. "dependencies": {
    12. // 省略
    13. },
    14. "devDependencies": {
    15. // 省略
    16. }
    17. }

    这样就新建了一个运行环境,模式名字为develop。 模式的名字develop就对应.env.develop的“develop”后缀。

    4.获取配置的值(修改页面程序)

    本处我修改:src/views/Home.vue

    修改前:

    1. <template>
    2. <div class="home">
    3. <img alt="Vue logo" src="../assets/logo.png">
    4. <HelloWorld msg="Welcome to Your Vue.js App"/>
    5. </div>
    6. </template>
    7. <script>
    8. // @ is an alias to /src
    9. import HelloWorld from '@/components/HelloWorld.vue'
    10. export default {
    11. name: 'Home',
    12. components: {
    13. HelloWorld
    14. }
    15. }
    16. </script>

    修改后:

    1. <template>
    2. <div class="home">
    3. <img alt="Vue logo" src="../assets/logo.png">
    4. <HelloWorld msg="Welcome to Your Vue.js App"/>
    5. <h1>{{ envInfo }}</h1>
    6. </div>
    7. </template>
    8. <script>
    9. // @ is an alias to /src
    10. import HelloWorld from '@/components/HelloWorld.vue'
    11. export default {
    12. name: 'Home',
    13. components: {
    14. HelloWorld
    15. },
    16. computed: {
    17. envInfo () {
    18. return process.env.VUE_APP_ENV_INFO
    19. }
    20. }
    21. }
    22. </script>

    5.启动并测试

    修改后的目录结构:

    启动项目:npm run develop

    它就会执行此命令:vue-cli-service serve --mode develop

    直接点击WebStrom的这项即可:

    启动完毕后,访问:http://localhost:8080/

    结果:(获取到了环境变量值)

    其他网址

    【Vue】vue-cli3多环境配置 - 简书

  • 相关阅读:
    C++入门指南:类和对象总结笔记(下)
    函数柯里化
    如何判断一个点在多边形内
    Camunda工作流引擎简记
    后端分页应该注意的事项
    建筑建材行业经销商协同系统解决方案:赋能企业构建核心竞争力
    使用uniapp框架搭建浙里办微应用(单点登录、埋点、适老化、RPC网关)
    包装类型、自动装箱与拆箱的原理、装箱拆箱的发生时机、包装类型的常量池技术、包装类型的11个常见判断是否相等的例子
    Nacos下载与安装
    SpringMVC的注解、参数传递、页面跳转
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/125349643