Vue学习笔记: Vue + Element-ui搭建后台管理系统模板

Vue学习笔记: Vue + Element-ui搭建后台管理系统模板

技术: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之处,恳请同仁多多指教!!!

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端互助会

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值