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日

相关文章

  • 微信小程序wepy框架笔记小结

    微信小程序wepy框架笔记小结 什么是wepy框架 wepy是一个类Vue框架的微信小程序框架,它封装了很多常见的操作,方便我们快速开发小程序,同时还支持组件化开发。 wepy框架的优点 代码结构清晰明了,易于维护 支持组件化开发,方便复用 支持ES6/7标准语法,提高开发效率 自带脚手架,快速初始化项目 wepy框架的基本使用 安装wepy npm ins…

    Vue 2023年5月27日
    00
  • vue脚手架vue-cli的卸载与安装方式

    下面是关于“vue脚手架vue-cli的卸载与安装方式”的完整攻略。 一、卸载vue-cli 1. 全局卸载 如果你使用的是全局安装的方式,则可以使用npm命令进行卸载。在命令行中输入以下命令: npm uninstall -g vue-cli 2. 本地卸载 如果你使用的是本地安装的方式,则需要进入到项目中进行卸载。在项目中打开命令行窗口,输入以下命令: …

    Vue 2023年5月27日
    00
  • vue中render函数和h函数以及jsx的使用方式

    下面是关于Vue中render函数和h函数以及jsx的使用方式的完整攻略。 一、什么是render函数和h函数? 在Vue中,我们通常使用template模板语法来编写组件的页面结构,但是在某些情况下,我们需要直接书写JavaScript代码来创建组件的DOM结构,这就需要用到Vue中的render函数和h函数。 1. render函数 render函数是V…

    Vue 2023年5月28日
    00
  • 轻松学Vue组件之单文件组件

    让我来详细讲解一下“轻松学Vue组件之单文件组件”的完整攻略。 标题 什么是单文件组件? 单文件组件是 Vue.js 组件的一种组织方式,它将模板、逻辑代码和样式都写在一个文件中,方便管理和复用。 如何创建单文件组件? 创建单文件组件很简单,只需要在项目中新建一个 .vue 后缀的文件,然后按照以下格式编写代码: <template> <!…

    Vue 2023年5月28日
    00
  • vue如何使用外部特殊字体的操作

    当我们在Vue应用中需要使用外部特殊字体时,我们可以通过以下步骤来实现。 步骤一:在项目中加入外部字体文件 首先需要将外部字体文件下载到本地,并将其加入到项目中。常见的字体文件格式有.ttf、.woff等。 例如,我们将一个名为myfont.ttf的字体文件放置于项目的assets/fonts目录下。 步骤二:配置字体文件 在index.html或main.…

    Vue 2023年5月27日
    00
  • Vue 用Vant实现时间选择器的示例代码

    请看以下详细讲解: Vue 用Vant实现时间选择器的示例代码 1. 安装 Vant 在项目中引入 Vant UI 库,可以通过npm进行安装: npm install vant -S 也可以从CDN方式引入,在HTML文件中添加以下代码: <!– 引入 Vant 样式文件 –> <link rel="stylesheet&q…

    Vue 2023年5月29日
    00
  • vue 运用mock数据的示例代码

    关于“Vue 运用Mock数据的示例代码”,我这里为你提供一份完整的攻略。 什么是Mock数据 先来了解一下什么是Mock数据。简单来说,Mock数据就是在数据量不足或者无法取得真实数据时,使用伪造(Mock)的数据,来模拟真实数据从而进行开发和测试的技术。 在Vue开发中,Mock数据的使用可以让我们快速的进行组件测试,避免依赖后端接口数据来进行开发和测试…

    Vue 2023年5月28日
    00
  • vue如何修改data中数据问题

    要修改Vue中的数据,可以通过两种方法:使用Vue提供的方法或直接修改data中的数据。以下是详细的攻略: 使用Vue提供的方法修改数据 Vue提供了许多可以修改data中数据的方法,常用的有以下几种: $set $set方法可以动态地向Vue实例添加一个响应式属性,用法如下: this.$set(this.data, ‘newValue’, ‘这是新的值’…

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