1 Element UI的引入
1.1 安装
npm i element-ui -S
官方文档(适配vue2.x):https://element.eleme.cn/#/zh-CN/ 适配vue3.x的为Element Plus,其官方文档地址为:https://element-plus.org/zh-CN/#/zh-CN,如果使用的是vue3那么请参照指南-安装中的内容安装Element Plus。
1.2 配置
在main.js中引入并进行启用
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
2 请求封装
2.1 安装axios(用于前后端数据交互)
npm install axios -S
2.2 编写拦截器
在src目录下新建utils文件夹,并新建api.js文件 拦截器功能:
- 请求封装:规范前端发送给后端的各种请求(post、get、put、delete)为:请求方式、接口路径、携带参数。
- 响应拦截器:由于后台回传数据的格式是有标准格式的,这里对回传的数据进行统一处理。
- 请求拦截器:将token放到请求头中。
import axios from "axios";
import { Message} from "element-ui";
import router from "../router";
axios.interceptors.request.use(
config=>{
if (window.sessionStorage.getItem('tokenStorage')) {
config.headers['Authorization'] = window.sessionStorage.getItem('tokenStorage');
}
return config;
},error => {
console.log(error);
}
);
axios.interceptors.response.use(
success=>{
if(success.status&& success.status==200){
if(success.data.code==500||success.data.code==401||success.data.code==403){
Message.error({
message:success.data.message
});
return;
}
if(success.data.message){
Message.success({
message:success.data.message
});
}
}
return success.data;
},
error=>{
if(error.response.code==504||error.response.code==404){
Message.error({
message:'服务器被吃了( ╯□╰ )'
});
}else if(error.response.code==403){
Message.error({
message:'权限不足,请联系管理员'
});
}else if(error.response.code==401){
Message.error({
message:'未登录,请先登录'
})
router.replace('/');
}else {
if (error.response.data.message){
Message.error({
message:error.response.data.message
});
}else {
Message.error({
message:'未知错误'
});
}
}
return;
}
);
let base='';
export const postRequest=(url,params)=>{
return axios({
method:'post',
url:`${base}${url}`,
data:params
})
}
export const putRequest=(url,params)=>{
return axios({
method:'put',
url:`${base}${url}`,
data:params
})
}
export const getRequest=(url,params)=>{
return axios({
method:'get',
url:`${base}${url}`,
data:params
})
}
export const deleteRequest=(url,params)=>{
return axios({
method:'delete',
url:`${base}${url}`,
data:params
})
}
2.3 请求转发
在项目目录下新建vue.config.js文件。 实现原理:所有请求依然是发送到localhost:8080,这个文件实现了地址代理,将发送到localhost:8080的请求转发到了localhost:8082(后端地址端口)
let proxyObj={};
proxyObj['/'] = {
ws:false,
target:'http://localhost:8082',
changeOrigin:true,
pathRewrite:{
'^/':'/'
}
}
module.exports={
devServer:{
host:'localhost',
port:8080,
proxy:proxyObj
}
}
|