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 不只是脚本
May 30 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
jQuery 中国省市两级联动选择附图
May 14 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
Apr 13 Javascript
JavaScript实现简单轮播图效果
Dec 01 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 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
实用函数5
2007/11/08 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
python 拼接文件路径的方法
2018/10/23 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
安装PyInstaller失败问题解决
2019/12/14 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
动物科学专业毕业生的自我评价
2013/11/29 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
酒店前台岗位职责
2015/04/16 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers