- 初始化项目
npm init vue@latest
- 安装依赖
vuex``element-plus``normalize.css
- 如果需要按需导入
elementPlus组件,执行npm install -D unplugin-vue-components unplugin-auto-import
- 在入口文件
main.js中导入全局使用的vuex配置文件及css全局样式
- 在
vite.config.js配置文件中的plugins根据elementPlus官方文档添加按需引入代码
- 防止数据刷新丢失,使用
vuex的数据持久化插件,比如npm i vuex-persistedstate -D
- 在
store/index.js中导入import createPersistedState from "vuex-persistedstate"
- 在
index.js写入以下代码
plugins:
[
// 这里若直接写 createPersistedState()则表示所有数据都缓存
createPersistedState({
reducer: state => {
return {
userInfo: state.userInfoModule.userInfo
}
}
})
]
- 在
service/index.js写入以下代码
import axios from 'axios'
// eslint-disable-next-line no-undef
switch (process.env.NODE_ENV) {
case 'development':
axios.defaults.baseURL = 'http://47.96.0.211:3001/admin'
break
case 'production':
axios.defaults.baseURL = 'http://47.96.0.211:3001/admin'
break
}
// 设置超时时间
axios.defaults.timeout = 5000
// 设置跨域是否需要携带凭证
axios.defaults.withCredentials = false
axios.interceptors.request.use(config => {
config.headers.token = localStorage.getItem('token')
return config
})
axios.interceptors.response.use(response => {
response?.data?.data?.token && localStorage.setItem("token", response?.data?.data?.token)
return response?.data
})
export default axios
- 在
api/user.js写入user相关api代码
import request from '@/service'
export function login(data) {
return request({
url: '/admin/login',
method: 'post',
data
})
}