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 相关文章推荐
js猜数字小游戏的简单实现代码
Jul 02 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
JavaScript通过字符串调用函数的实现方法
Mar 18 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
Aug 13 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
原生js+cookie实现购物车功能的方法分析
Dec 21 Javascript
Vue自定义表单内容检查rules实例
Oct 30 Javascript
利用 JavaScript 构建命令行应用
Nov 17 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
解决微信小程序调用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
15种PHP Encoder的比较
2007/03/06 PHP
php连接mysql数据库代码
2009/03/10 PHP
php多任务程序实例解析
2014/07/19 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
C++面试题目
2013/06/25 面试题
小学庆六一活动方案
2014/02/28 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
人力资源部工作计划
2019/05/14 职场文书
python入门之算法学习
2021/04/22 Python