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

部署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日

相关文章

  • 一步步从Vue3.x源码上理解ref和reactive的区别

    当我们在使用Vue3.x的时候,ref和reactive这两个API很常用,但是也经常容易搞混。这篇攻略将介绍ref和 reactive的区别,并且通过源码分析来更加深刻理解这两者之间的差异。 1. reactive reactive是用于将对象转为响应式的API。我们一般使用这个API来将普通的对象转成可以响应式地监听的对象。使用方法如下所示: impor…

    Vue 2023年5月28日
    00
  • vue中组件的name属性含义和用法示例

    Vue中组件的name属性用来给组件命名,在Vue的编译过程中,它会被用于警告和错误信息中的提示。除此之外,name属性还有一些其他的用处,下面给出详细讲解: 基本用法 我们可以在组件定义时加上name属性,例如: <template> <div>Hello, {{name}}!</div> </template&g…

    Vue 2023年5月27日
    00
  • Vue 项目的成功发布和部署的实现

    Vue 项目的成功发布和部署,可以分为以下几个步骤: 1. 准备工作 在开始部署之前,需要确保你的项目已经完成开发,并成功运行在本地环境中。同时需要确保已经安装必要的环境和工具,例如:Node.js、Git、npm 或 yarn。 2. 打包 Vue 项目 使用 npm run build 或 yarn build 命令来打包 Vue 项目并生成可部署的静态…

    Vue 2023年5月28日
    00
  • 简单谈谈Vue中的diff算法

    简单谈谈Vue中的diff算法 什么是Vue中的diff算法 在Vue.js中,使用虚拟DOM(Virtual DOM)来优化DOM操作的效率。然而,每当Vue组件内部数据发生变化时,都需要比较新旧两个虚拟DOM树来找出变化的部分并最终更新到DOM上。这个过程就是Vue中的diff算法。 Vue中的diff算法原理 Vue中的diff算法通过递归地比较新虚拟…

    Vue 2023年5月28日
    00
  • 分分钟玩转Vue.js组件(二)

    让我来详细讲解一下“分分钟玩转Vue.js组件(二)”的完整攻略。 简介 Vue.js 是一款非常流行的 JavaScript 库,用于构建用户界面。Vue.js 具有简单易学、轻量灵活、响应式渲染及组件化等特点, 非常适合构建现代化的 Web 应用程序。 本篇文章将带大家深入了解 Vue.js 中的组件化,在掌握基本概念后,教你如何使用 Vue.js 构建…

    Vue 2023年5月27日
    00
  • Vue中关于重新渲染组件的方法及总结

    关于Vue中重新渲染组件的方法及总结,我可以给您提供以下完整攻略。 方法总结 Vue中重新渲染组件的方法总结如下: 父组件强制更新子组件:可以通过 $forceUpdate 方法来强制更新子组件,这样会导致子组件的所有内部状态被更新并重新渲染。 直接修改 props 数据:如果父组件中传递给子组件的 props 数据变化了,子组件就会自动重新渲染。 监听 p…

    Vue 2023年5月28日
    00
  • Vue 自定义动态组件实例详解

    接下来我会详细讲解“Vue 自定义动态组件实例详解”的完整攻略。这篇攻略主要涉及以下内容: 自定义动态组件的基本概念和用法。 组件的渲染函数和选项 API。 自定义动态组件的实例方法和生命周期函数。 组件的动态注册和使用。 使用示例和注意事项。 在具体讲解之前,我先简单介绍一下什么是 Vue 自定义动态组件。Vue 自定义动态组件是一种可以在运行时动态创建的…

    Vue 2023年5月28日
    00
  • TSX常见简单入门用法之Vue3+Vite

    TSX是指将JSX语法与Typescript结合起来使用的技术。TSX通常用于开发React和Vue等现代Web框架。下面我将详细讲解如何使用TSX开发Vue3项目,基于Vite打包工具。整个过程包含以下几步: 安装所需依赖 在开始使用TSX开发Vue3之前,我们需要安装相关的依赖包。在我们的项目中先安装vue和@vue/compiler-sfc两个依赖。 …

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