前端¶
创建项目¶
初始化vue项目
使用Vant4组件库
在main.js中引入组件
import { createApp } from 'vue';
// 1. 引入你需要的组件
import { Button } from 'vant';
// 2. 引入组件样式
import 'vant/lib/index.css';
const app = createApp();
// 3. 注册你需要的组件
app.use(Button);
配置ajax请求¶
引入Axios库
配置请求拦截器
const baseURL = 'http://192.168.31.69:2560/'
const request = axios.create({
// 基础地址,超时时间
baseURL, timeout: 3000
})
// 请求拦截器
request.interceptors.request.use(
(config) => {
// 携带token
const useStore = useUserStore()
if (useStore.token) {
config.headers.Authorization = useStore.token
}
return config
},
(err) => Promise.reject(err)
)
// 响应拦截器
request.interceptors.response.use(
(res) => {
// 摘取核心响应数据
if (res.data.code === 200) {
return res?.data?.data
} else {
// 处理业务失败
showFailToast(res.data.msg || '服务异常')
return Promise.reject(res.data)
}
},
(err) => {
// 处理401错误 权限不足 或 token 过期 => 拦截到登录
if (err.response?.status === 401) {
router.push('/login')
showToast('您未登录,请登录!')
return Promise.reject(err)
}
// 错误的默认情况 => 只要给提示
showFailToast(err.response.data.msg || '服务异常')
return Promise.reject(err)
}
)
export { request, baseURL }
配置pinia¶
使用pinia保存token,并配置持久化
export const useUserStore = defineStore('counter', () => {
const token = ref('')
const setToken = (newToken) => {
token.value = newToken
}
const removeToken = () => token.value = ''
return { token, setToken, removeToken }
}, {
// 持久化
persist: true
})