这是一期主要分享vue-cli4.0
配置
新建一个项目,最令人为难的是配置环境。拿vue来说,创建项目很简单,跟着文档走即可,但是要知道配置本地,测试,生产环境,以及反向代理等等,如果对于一个对vue构建不是特别了解,或者对webpack
不是特别了解的人来说,真是很为难。
创建项目不再赘述,直接看如何配置环境。
配置反向代理
反向代理其实就是在本地为了解决跨域问题,将本地启动的比如localhost:8080
代理成测试环境,发送给后端就不会出现跨域的问题。
vue-cli2.0
以及以前,都是在创建项目的时候,会自动创建一个文件夹build
,里面有各个环境配置的文件。vue-cli3.0
及之后的版本,省去了这个文件夹,让这个项目结构更加清晰。
我们需要配置时,需要手动在最外层,即跟public
文件夹同一级,创建vue.config.js
文件夹,用来放所有配置项。
我所配置的反向代理在devServer
里配置。
module.exports={
assetsDir:'static',
publicPath:'./',
devServer: {
host: 'localhost',
port: 8080,
proxy: {
'/mall': {
target: process.env.VUE_APP_BASE_URL_MALL,
changeOrigin: true,
ws: true,
pathRewrite: {
'^/mall': ''
}
},
},
},
}
如上的代码将/mall
代理成target
里面的环境(target环境,下面会做详细描述),需要注意,反向代理只是针对本地,测试和正式环境不需要代理,在做发请求封装的时候需注意。
配置环境
看下package.json
中的scripts
项,有几个环境,可以直接npm run
对应的环境即可。
如果想配置其他名称或者其他的环境,可以在vue.config.js
同一级添加
开发环境env.development
测试环境env.stage
正式环境env.production
在对应的环境文件里,配置如下
NODE_ENV=stage
VUE_APP_BASE_URL_MALL='http://test.cn'
其中NODE_ENV
配置的是环境,可以在后期根据环境进行区分本地/测试/正式环境
VUE_APP_
是定义相对应的环境变量,可以在反向代理和封装请求的时候使用。
以下是我对发请求进行的封装
import axios from 'axios'
export default function http({url,method='GET',data=null}) {
return new Promise((resolve, reject) => {
let wholeUrl=''
// development:本地;stage:测试;production:正式
if(process.env.NODE_ENV=='development'){
wholeUrl=`/mall${url}`
}else {
wholeUrl=`${process.env.VUE_APP_BASE_URL_MALL}${url}`
}
axios({url:wholeUrl,method,data}).then(res=>{
resolve(res)
}).catch(err=>{
reject(err)
})
});
}
在以后不管是发正式还是发测试,均不用手动修改环境,很便利。