vue部署包可配置后台接口地址的方法

yizhihongxing

部署Vue前端应用时,可能存在需要动态配置后台接口地址的情况,比如区分开发环境、测试环境和生产环境的接口地址不同,如果需要每次手动修改这些接口地址,非常麻烦和容易遗漏,因此需要使用一些方法来实现动态配置。

下面就是一个可以用于Vue部署包可配置后台接口地址的方法。

1. 配置文件定义

Vue项目可以通过定义不同环境的配置文件,分别来指定不同环境的后台接口地址。这个配置文件可以统一使用JSON格式。

  • 在项目根目录下创建config文件夹,并根据需要在config文件夹下创建不同环境的配置文件,例如:
    ├─config
    │ ├─dev.env.json // 开发环境配置文件
    │ ├─test.env.json // 测试环境配置文件
    │ └─prod.env.json // 生产环境配置文件
  • 定义配置文件中的参数如下:
    {
    "BASE_API": "/api",
    "APP_DEBUG": true
    }

    其中BASE_API表示后台接口地址,APP_DEBUG表示是否启用调试模式。在不同的环境下,这两个参数的值可能不同。

2. Webpack配置

在Vue项目的配置文件vue.config.js中,可以通过copy-webpack-plugin插件,将不同环境的配置文件复制到打包后的文件夹中,并在process.env全局变量中设置相应的环境变量。

示例代码:

// vue.config.js
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = {
  // ...其它配置
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin([
        {
          from: `./config/${process.env.NODE_ENV}.env.json`,
          to: './static/env.json',
          toType: 'file'
        }
      ])
    ]
  },
  // 输出路径为相对路径
  publicPath: './',
  // 开启sourcemap
  productionSourceMap: true,
  chainWebpack: config => {
    // 配置全局变量
    config.plugin('define').tap(args => {
      args[0]['process.env'].APP_ENV = JSON.stringify(process.env.NODE_ENV)
      return args
    })
  }
}

3. 使用配置文件

在Vue项目中,可以通过axiosbaseURL配置来实现动态配置后台接口地址。在基于Vue Cli 3.x和Axios的项目中,可以在src文件夹下的main.js中配置axiosbaseURL,并从env.json中读取后台接口地址。

示例代码:

// main.js
import Vue from 'vue'
import App from './App.vue'
import axios from 'axios'

Vue.config.productionTip = false

// 配置axios的baseURL
axios.defaults.baseURL = process.env.NODE_ENV !== 'production' ? '/api' : JSON.parse(document.querySelector('#env').textContent).BASE_API

new Vue({
  render: h => h(App),
}).$mount('#app')

index.html中,需要在</head>标签前添加以下代码,以将配置文件中的参数注入到全局中。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>vue-cli3-seed</title>
    <script type="text/template" id="env">
      <% JSON.stringify(process.env) %>
    </script>
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

这个代码块的作用是将process.env打包后的全局变量序列化后注入到_id为env的script标签中,在axiosbaseURL中使用。

示例说明

  • 示例1:假设在开发环境下,后台接口地址为http://localhost:8080/api,在测试环境下,后台接口地址为http://192.168.0.1:8080/api,在生产环境下,后台接口地址为http://api.example.com。为了实现动态配置后台接口地址,可以在config文件夹下创建三个配置文件dev.env.json,test.env.json,prod.env.json,分别定义BASE_API参数为相应的后台接口地址。在vue.config.js中使用copy-webpack-plugin插件将这三个文件复制到打包后的文件夹中,在chainWebpack中配置全局变量APP_ENV为当前的环境名称。在main.js中使用axiosbaseURL来动态配置后台接口地址。
  • 示例2:假设在开发、测试和生产环境下,使用的后台接口地址均为相同的地址,都是http://backend.example.com。同样可以使用上面介绍的方法,在config文件夹下创建三个配置文件,并定义相同的BASE_API参数为http://backend.example.com。优点是在修改后台接口地址时,只需要修改配置文件即可,不需要修改代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue部署包可配置后台接口地址的方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • mitt tiny-emitter发布订阅应用场景源码解析

    mitt tiny-emitter发布订阅应用场景源码解析 简介 mitt是一个基于JavaScript的简单、快速、可扩展的发布/订阅(pub/sub)库,适用于各种应用场景。它的基本思想是订阅者向一个发布者注册其感兴趣的事件类型,当该类型事件发生时,订阅者会被通知并执行其所定义的响应逻辑。这种解耦合的模式为开发者提供了良好的可维护性和扩展性。 mitt的…

    Vue 2023年5月28日
    00
  • Vue.js中this如何取到data和method里的属性详解

    对于Vue.js项目中,我们经常需要在代码中引用Vue实例中的属性或方法。在此过程中,我们需要清楚地了解this关键字的作用和作用域。本文将详细讲解如何在Vue.js中获取data和method中的属性。 this关键字的作用和作用域 在Vue.js中,this关键字是指Vue实例的上下文。Vue实例中的属性和方法都可以通过this在相应的位置中访问。但是,…

    Vue 2023年5月28日
    00
  • idea项目debug模式无法启动的解决

    针对“idea项目debug模式无法启动”的问题,我们可以尝试以下措施解决: 1. 检查项目依赖 在使用idea进行项目开发时,如果项目依赖有问题,可能会导致debug模式启动失败。这时我们可以尝试检查一下项目依赖的问题,具体步骤如下: 在idea中打开对应项目 点击菜单栏上的File -> Project Structure 在弹出的窗口中,点击左侧…

    Vue 2023年5月28日
    00
  • echarts报错:Error in mounted hook的解决方法

    下面是关于”echarts报错:Error in mounted hook的解决方法”的完整攻略。 什么是“echarts报错:Error in mounted hook”的问题? 当使用 echarts 绘制图表时,有时在控制台会看到一个错误提示:“Error in mounted hook”,通常提示中还会包含一些错误信息,比如:“Cannot read…

    Vue 2023年5月27日
    00
  • 基于VUE实现判断设备是PC还是移动端

    实现判断设备是PC还是移动端可以通过判断窗口的宽度或者使用相关库进行识别。下面是基于VUE实现该功能的攻略: 步骤一:安装必要的依赖 使用VUE实现该功能需要使用Vue相关的插件,例如vue-device-detector。可以通过npm安装: npm install –save vue-device-detector 步骤二:在main.js中使用插件 …

    Vue 2023年5月27日
    00
  • vue iview组件表格 render函数的使用方法详解

    Vue iView组件表格 render函数的使用方法详解 什么是 render 函数 在 Vue 中,render 函数是用来生成虚拟 DOM 的函数,它可以根据数据生成对应的 HTML 结构,并最终生成真实的 DOM 节点。 为什么需要 render 函数 在使用 iView 表格组件时,我们需要通过传入 columns、data 等参数来生成表格的列和…

    Vue 2023年5月28日
    00
  • vue用Object.defineProperty手写一个简单的双向绑定的示例

    下面是Vue用Object.defineProperty手写一个简单的双向绑定的攻略。 双向绑定是指当数据改变时,视图也会随之更新,而当视图改变时,数据也会随之更新。Vue是一款双向绑定的框架,它通过观察者模式实现了数据与视图的同步更新。其核心原理就是利用Object.defineProperty()方法对数据进行拦截和劫持,实现数据变更时视图的更新操作。下…

    Vue 2023年5月28日
    00
  • vue el-date-picker 日期回显后无法改变问题解决

    对于“vue el-date-picker 日期回显后无法改变问题解决”的完整攻略,可以分为以下几个步骤: 步骤 1:引入 el-date-picker 组件 首先,在组件中引入 el-date-picker 组件: <el-date-picker v-model="date" type="date">&l…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部