Vue 新增不参与打包的接口地址配置文件

 

by:授客 QQ1033553122

 

开发环境

 

Win 10

 

Vue 2.5.2

问题描述

vue工程项目,npm run build webpack方式打包,每次打包后如果需要更改后台接口地址(项目中,接口地址设置成变量,存放在js文件中,需要用到的地方导入),都需要重新打包,比较麻烦,所以,想给项目增加个配置文件,打包后如果要更改接口地址,修改该文件即可。

解决方法

创建config.js

项目根目录/static目录下,创建config.js文件,内容如下:

;(function(env) {

// 开发环境接口服务器地址

const dev = {

API_BASE_URL:"http://localhost:8000"

}

// 线上环境接口服务器地址

const prod = {

API_BASE_URL:"http://10.xxx.xx.xx:8001"

}

if (env == "dev") {

return dev

} else if (env == "prod") {

return prod

}

})("dev")

修改main.js

import axios from "axios"

...略

let myConfigPath = "/static/config.js"

if (process.env.NODE_ENV === "development") {

myConfigPath = "../static/config.js"

}

axios.get(myConfigPath, { headers: { "Cache-Control": "no-cache" } }).then(response => {

Vue.prototype.$apiBaseURL = eval(response.data).API_BASE_URL

new Vue({

el: "#app",

router,

store, // 注入 store

components: { App },

template: "<App/>"

})

})

 

如上,先通过请求,获取config.js文件内容 response.data,然后通过eval(response.data)文件内容当做代码执行,进而获取js中函数返回的内容,即我们需要的配置,并挂载在Vueprototype上,就可以在每个 Vue 的实例中使用。这里把vue创建实例放在获取config.js配置文件之后主要是因为axios异步请求的缘故。

 

注意,这里不能不能使用import,一定要发起网络请求,去请求这个js文件,否则build时,webpack会将此配置文件应当输出的值写死在压缩之后的js中,之后去动手修改dist/static中的配置文件就不起作用了。

 

另外,添加{ headers: { "Cache-Control": "no-cache" } }请求头,防止浏览器从磁盘缓存读取,导致后台更改了配置,前台读取的还是旧的文件。

 

npm run build后,config.js位于dist/static目录下,项目线上环境nginx 静态文件路由关键配置如下:

location / {

            root /opt/TMP/frontend/dist; #这里的dist存放的就是上述打包的路径

...

 

实践表明,使用nginx部署的情况下,myConfigPath 不能设置为 "./static/config.js",只能设置为myConfigPath = "/static/config.js",即配置为绝对路径,否则刷新某些页面的情况下,会请求不到config.js

 

以下为配置myConfigPath "./static/config.js"的情况下,执行二级页面的刷新操作(页面URLhttp://10.1xx.xx.xx/testerView/testCaseManagement,根据我的项目程序设计,此操作会先访问二级路由页面testerView),查看nginx日志,发现如下,请求找不到:

 

引用配置

本例中,在自己封装的axios.js中使用该配置

import axios from"axios"

import Vue from "vue"

...略

function request(options) {

return new Promise((resolve, reject) => {

const instance = axios.create({

baseURL: Vue.prototype.$apiBaseURL,

headers:config.headers,

timeout:config.timeout,

withCredentials:config.withCredentials,

responseType:config.responseType

})

...略

Vue 新增不参与打包的接口地址配置文件的更多相关文章

  1. vue2+axios在不同的环境打包不同的接口地址

    node.js的环境变量 process process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程.作为一个对象,它对于 Node.js 应用程序始终是可用 ...

  2. vue中打包生成可配置文件以便修改接口地址

    vue打包上传到服务器之后,如果数据接口域名发生变化,需要手动修改接口地址,在发布的时候也麻烦,于是.. 在打包之后如果有一个json配置文件以便修改那不是方便很多 在网上找了一些方法貌似都是异步请求 ...

  3. VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址

    转载地址: https://blog.csdn.net/gebitan505/article/details/58166055 VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址 前 ...

  4. 在webpack搭建的vue项目中如何管理好后台接口地址

    在最近做的vue项目中,使用了webpack打包工具,以前在做项目中测试环境和生产环境的接口地址都是一样的,由于现在接口地址不一样,需要在项目打包的时候手动切换不同的地址,有时候忘记切换就要重新打包, ...

  5. vue cli脚手架项目利用webpack给生产环境和发布环境配置不同的接口地址或者不同的变量值。

    废话不多说,直接进入正题,此文以配置不同的接口域名地址为例子 项目根目录下有一个config文件夹,基础项目的话里面至少包括三个文件, 1.dev.env.js 2.index.js 3.prod.e ...

  6. vue项目接口地址的定义

    对于接口地址域名我们经常会遇到,那么如何去定义呢: 只要在config/dev.env.js中定义变量NODE_ENV就行啦 在.vue文件中的引用方式如下: 嗯,就是这样简单~~~~

  7. vue wabpack 切换开发环境 和生成环境 的接口地址

    /config/dev.env.js 新增一行 var merge = require('webpack-merge') var prodEnv = require('./prod.env') mod ...

  8. webpack正式、测试环境接口地址本地运行及打包命令配置

    声明:本文由w3h5原创,转载请注明出处:<webpack正式.测试环境接口地址本地运行及打包命令配置> https://www.w3h5.com/post/521.html 为了方便开发 ...

  9. vue webpack打包之后 重新修改配置文件接口API路径,无需修改代码后再打包

    用vue-cli构建的项目通常是采用前后端分离的开发模式,也就是前端与后台完全分离,此时就需要将后台接口地址打包进项目中,但是有的时候需要修改接口地址,为了避免为了修改接口地址而进行修改代码后再重新打 ...

  10. vue config.js配置生产环境和发布环境不同的接口地址问题

    第一步,分别设置不同的接口地址 首先,我们分别找到下面的文件: /config/dev.env.js /config/prod.env.js 其实,这两个文件就是针对生产环境和发布环境设置不同参数的文 ...

随机推荐

  1. Visual Studio 智能代码插件:CodeGeeX

    前言 在软件开发领域,高效的编程助手一直是提升开发者效率和质量的关键.随着人工智能技术的不断发展,智能编程助手逐渐成为开发者们不可或缺的工具.其中,CodeGeeX作为一款专为Visual Studi ...

  2. Geatpy学习笔记1:官方案例

    一.入门 1.求解器模式入门 案例 1 import geatpy as ea import numpy as np # 构建问题 r = 1 # 目标函数需要用到的额外数据 @ea.Problem. ...

  3. XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览

    XML Web服务是一种用于在网络上发布.发现和使用应用程序组件的技术.它基于一系列标准和协议,如WSDL.SOAP.RDF和RSS.下面是一些相关的内容: WSDL(Web服务描述语言):用于描述W ...

  4. 初识c语言—c语言的初步认识和一个简单的程序

    C语言是什么 编程语言(编程语言是控制计算机的一系列指令,他又固定的格式和词汇.同时也叫计算机语言(计算机语言是,人和计算机通讯的语言)) C语言的特点 语言简洁,紧凑,使用方便 运算符丰富 数据类型 ...

  5. Vue 3 Teleport:掌控渲染的艺术

    title: Vue 3 Teleport:掌控渲染的艺术 date: 2024/6/5 updated: 2024/6/5 description: 这篇文章介绍了Vue3框架中的一个创新特性--T ...

  6. ABC330

    D 记录每一行,每一列有多少个 o,然后统计答案即可. code E 想到 \(mex^{i \le n}_{i = 1} a_i \le n\) 这整个题就可做了(赛时因为没想到这个,痛失 \(47 ...

  7. Externalizable接口实现序列化与反序列化

    Externalizable接口实现序列化与反序列化 package com.example.core.mydemo.java; import com.example.core.mydemo.json ...

  8. python 文件查找及截取字符串 (替换,分割) demo

    #"F:\\test.txt" ''' # 例1:字符串截取 str = '12345678' print str[0:1] # 例2:字符串替换 str = 'akakak' s ...

  9. 实验四:WinRAR漏洞

    [实验目的] 通过打开rar文件,获取到目标机shell. [知识点] winrar漏洞 [实验原理] 该漏洞是由于WinRAR所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库 ...

  10. ClickHouse的物化视图及MySQL表引擎

    MySQL表引擎可以与MySQL数据库中的数据表简历映射,并通过SQL向其发起远程查询. MySQL表引擎可以与物化视图结合,来同步更新MySQL数据库中的数据. 语法: CREATE TABLE [ ...