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实现在小方框中浏览大图的代码
Aug 14 Javascript
javascript处理table表格的代码
Dec 06 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
a标签的href与onclick事件的区别详解
Nov 12 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
微信小程序之数据缓存的实例详解
Sep 29 Javascript
Vue 事件处理操作实例详解
Mar 05 Javascript
微信小程序image图片加载完成监听
Aug 31 Javascript
浅析Vue下的components模板使用及应用
Nov 27 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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 在线打包_支持子目录
2008/06/28 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
python用for循环求和的方法总结
2019/07/08 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python中setuptools的作用是什么
2020/06/19 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
中国电视购物:快乐购
2017/02/04 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
公务员诚信承诺书
2014/05/26 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
雷锋观后感
2015/06/10 职场文书
2019各种承诺书范文
2019/06/24 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL