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/ ,正常打开网页表示项目创建成功

 

二、建立相应目录结构,配置路由

Vue学习笔记: Vue + Element-ui搭建后台管理系统模板_第1张图片

详细介绍几个文件

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下载项目

组装:

Vue学习笔记: Vue + Element-ui搭建后台管理系统模板_第2张图片

六、预览页面

Vue学习笔记: Vue + Element-ui搭建后台管理系统模板_第3张图片

 

学习小记,仅供参考,如有疑问请一键三连;若有bug之处,恳请同仁多多指教!!!

 

 

你可能感兴趣的:(Vue学习笔记,vue,前端)