vue-cli3/4构建的项目,我发现一种花里胡哨的前后端联调方式

781 阅读2分钟

前言:用vue-cli3/4构建的项目,正常应该怎么联调?接手一个新项目,发现里面的联调方式不常规。

1、常规打法:

概要:因为浏览器跨域问题,vue-cli3/4通过中间服务器转发,实现跨域。跨域是浏览器禁止的,服务端并不禁止跨域 所以浏览器发给自己的服务端,然后由自己的服务端再转发给要跨域的服务端,做一层代理 vue-cliproxyTable用的是http-proxy-middleware中间件。

一般在vue.config.js文件里配置devServe.proxy对象,target的值设为后端的ip的地址,当然你们需要处在同一个内网中(比如公司内网,起码在同一个路由器下。为啥?),然后监听你请求url的组件标识(根目录,也就是一个项目中每一次发请求时都会有的一串字符。url组成:协议://域名:端口/虚拟目录/文件名?参数&参数)url组成如下图:


这里需要在设置的时项目中的公用目录:


这样设置好了,一般就可以联调了。可以让后端在接口处打个断点,看看能不能走到断点处。或者后端看看ide里打印的logs确认是否连上。

2、非常规打法

概要:主要思路就是不走代理,直接全路由请求后端(或者服务端),跨域问题通过修改浏览器配置解决

在配置请求接口的文件,@/api/index.js文件里,定义baseUrl,这个baseUrl在联调阶段时后端的ip,在发布阶段是通过let baseUrl = window.location.protocol + '//' + window.location.host

拼接全路径的。如图:


这样配置之后,一般的浏览器会报跨域问题,下面说一下如何配置chrome浏览器,让他可以跨域。

  1. 在电脑上新建一个目录,例如:C:\MyChromeDevUserData
  2. 右键点击 Chrome 快捷方式图标,选择“属性”
  3. 在属性页面中的目标输入框尾部加上: --disable-web-security --user-data-dir=C:\MyChromeDevUserData
  4. 点击“应用”并关闭属性页面。重新打开 chrome 浏览器。如果浏览器出现提示“ --disable-web-security”,那么说明配置成功



可以尝试一下。