vue-cli 3.x配置跨域代理的实现方法


Posted in Javascript onApril 12, 2019

写在前面

vue-cli 3.x 的beta版本已经发布了一段时间,很早就像体验一番一直找不到时间。这些日子刚好有空就想着依照网上的一些例子练下手,刚一上手就踩到坑了。

3.x 版本对整个项目的构建都有很大的改动,项目的默认配置整个都转移到CLI service里去了,从而所有的配置文件在初始化的项目中并没有生成。初次生成项目的时候可谓是完全懵的,无论是baidu还是google,对于3.x的介绍几乎就没有,仅有的一些也只是项目的一些生成流程,那怎么办,只能靠自己瞎整了。

既然没有现成的(作为一个伸手党我还是很自觉的承认了),那就只能去扒官方文档了,慢慢啃。这可就苦了我这个英语战斗力只有5的渣了,凭借着百度翻译和谷歌翻译,然后夹杂着自己的一些猜想,好歹是把基本的给整明白了一点点。

由于文笔实在太烂了,多余的废话就不说了,直接上干货。

跨域代理配置

由于3.x的默认配置都转移到了CLI service里,所以生成的项目中并没有配置项,我们如果需要自定义一些项目配置,则需要自己在项目的根目录(root)创建一个vue.config.js。vue.config.js里的配置项所有都是可选的,这就避免了我们去看一大堆不必要的默认配置,只需要配置自己需要的部分就行了。【官方文档】

由于baseUrl也是关联的部署目录,我们需求的仅仅是开发环境的变量,所以尽可能的我们不动baseUrl这个变量以免部署的时候出现问题。所以这里配置稍作修改。

需求上是我们只需要在开发环境配置跨域代理,所以我们可以在开发环境的配置上加上能够代理上的环境变量即可。官方提供了环境变量的配置方案。

在项目的根目录,我们创建一个.env.development文件来做开发环境的变量设置。

我们在.env.development文件下设置变量VUE_APP_BASE_API=/api即可将devServer的proxy重写的url赋值给VUE_APP_BASE_API,我们仅需在axios的封装方案上使用VUE_APP_BASE_API这个变量,就可以对应上devServer设置的变量。

// vue.config.js
module.exports = {
  // 修改的配置
  // 将baseUrl: '/api',改为baseUrl: '/',
  baseUrl: '/',
  devServer: {
    proxy: {
      '/api': {
        target: 'http://www.example.org',
        changeOrigin: true,
        ws: true,
        pathRewrite: {
         '^/api': ''
        }
      }
    }
  }
}
// .env.development
VUE_APP_BASE_API=/api

这里依然是采用的http-proxy-middleware来做的代理配置,一些自定义配置可以移步到官网去进行参考。

后记

第一次写文档,之前都是伸手养成了懒得习惯,现在因没有可伸手的,就自己撸了,同时以此便利萌新以及也在踩坑的小伙伴。希望能帮到大家。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery对象和DOM对象相互转化
Apr 24 Javascript
基于JQuery的动态删除Table表格的行和列的代码
May 12 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
JavaScript中继承用法实例分析
May 16 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
详解webpack自动生成html页面
Jun 29 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
全新打包工具parcel零配置vue开发脚手架
Jan 11 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 #Javascript
详解Bootstrap 学习(一)入门
Apr 12 #Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 #Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 #Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 #Javascript
JS实现li标签的删除
Apr 12 #Javascript
vue中多路由表头吸顶实现的几种布局方式
Apr 12 #Javascript
You might like
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP查询分页的实现代码
2017/06/09 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
React简单介绍
2017/05/24 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
如何定义TensorFlow输入节点
2020/01/23 Python
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
大学生水果店创业计划书
2014/01/28 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
机械专业求职信范文
2014/07/15 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android