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 相关文章推荐
Javascript 获取字符串字节数的多种方法
Jun 02 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
jQuery实现加入购物车飞入动画效果
Mar 14 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
vue路由中前进后退的一些事儿
May 18 Javascript
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
VueCli生产环境打包部署跨域失败的解决
Nov 13 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
构建简单的Webmail系统
2006/10/09 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
php 实现进制相互转换
2016/04/07 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
python对url格式解析的方法
2015/05/13 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python常见字典内建函数用法示例
2018/05/14 Python
python中调试或排错的五种方法示例
2019/09/12 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
服务承诺书怎么写
2014/05/24 职场文书
市场营销计划书范文
2015/01/16 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
Python函数对象与闭包函数
2022/04/13 Python