技术:Vue + Element-ui
功能:后台管理系统基础模板,路由配置,加载页面进度条,请求响应拦截器的封装等
页面预览:后台管理系统模板
代码:GitHub
选择好项目所在文件夹:进入cmds输入 vue create zhb_vue_cli
zhb_vue_cli为自定义项目名称;
如果不需要太多功能的话可以选择快速创建。选择第一个直接回车,进行项目创建;
cmd窗口输入命令 cd zhb_vue_cli 回车进入 vueinit001 项目中,再输入 npm run serve 回车启动服务
1.1.4、浏览器地址栏输入 http://localhost:8080/ ,正常打开网页表示项目创建成功
1、package.json
package.json文件是项目配置文件,除了项目的一些基本信息外,注意一下三点:
(1)dependencies:项目发布时的依赖
(2)devDependencies:项目开发时的依赖
(3)scripts:编译项目的一些命令
2、main.js
这里是入口文件,可以引入一些插件或静态资源,当然引入之前要先安装了该插件,在package.json文件中有记录。
3、App.vue
这是一个标准的vue组件,包含三个部分,一个是模板,一个是script,一个是样式,这里需要了解vue的基础。
import axios from 'axios'
import { Message } from 'element-ui'
import router from '@/router';
const service = axios.create({
timeout: 20000
})
/** 添加请求拦截器 **/
service.interceptors.request.use(
config => {
if (localStorage.getItem('token')) {
config.headers['token'] = localStorage.getItem('token')
}
if (config.method == 'post') {
config.headers['Content-Type'] = 'application/json'
}
if (config.data instanceof FormData) {
config.headers = {
'Content-Type': 'multipart/form-data',
'token':localStorage.getItem('token')
}
}
return config
},
error => {
console.log(error)
return Promise.reject(error)
}
)
// 这里的conut 是为了防止tokne失效导致太多提示框弹出
let count = 0
/** 添加响应拦截器 **/
service.interceptors.response.use(
response => {
const res = response.data;
if (res.code != 20000) {
if (res.code == 30001) {
if (count === 0) {
Message({
message: "身份验证过期,请重新登录!",
type: "error",
});
}
localStorage.removeItem("token")
router.push({ path: '/login', query: { path: router.currentRoute.fullPath } })
}
// else if (res.code == 10001) {
// Message.error(res.msg);
// }
count++
return Promise.reject(res)
} else {
return res
}
},
error => {
if (count === 0) {
if( error.response.data.code == "30001" ){
Message({
message: '登录令牌失效,请重新登录',
type: 'error',
duration: 3 * 1000
})
count = 0;
localStorage.removeItem("token")
router.push({ path: '/login', query: { path: router.currentRoute.fullPath } })
}else{
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
}
}
count++
return Promise.reject(error)
}
)
export default service
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const routes = [
{
path: '/',
redirect: '/login'
},
{
path: '/login',
name: "login",
component: () =>
import('@/views/Login.vue'),
},
{
path: '/',
name: "index",
component: () => import('@/layout/admin.vue'),
meta: { title: 'admin' },
children:[
{
path: '/index',
name: "index",
component: () => import('@/views/index.vue'),
meta: { title: '系统首页' },
},
{
path: '/user',
name: "user",
component: () => import('@/views/user.vue'),
meta: { title: '用户' },
},
{
path: '/portal',
name: "portal",
component: () => import('@/views/portal.vue'),
meta: { title: '门户管理' },
},
{
path: '/edit',
name: "edit",
component: () => import('@/views/edit.vue'),
meta: { title: '富文本编辑器' },
},
]
},
]
export default new VueRouter({
base: process.env.BASE_URL,
routes
})
代码详情:请在GitHub下载项目
组装:
学习小记,仅供参考,如有疑问请一键三连;若有bug之处,恳请同仁多多指教!!!