SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示

前提:

(1) 相关博文地址:

 SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p/12930895.html

(2)代码地址:

https://github.com/lyh-man/admin-vue-template.git

 

一、定义公共组件页面

  简单的页面效果如下所示:(做的比较粗糙,大致理解页面即可)

 

 

 

1、安装 element-ui

(1)简介
  一款 ui 框架。使用 element-ui 用于实现页面的绘制。

【官网:】
    https://element.eleme.cn/#/zh-CN
    
【文档:】
    https://element.eleme.cn/#/zh-CN/component/installation

 

(2)安装
  可以通过 npm 或者 cdn 方式使用,此处使用 npm 方式安装。

【安装方式一:(npm 安装)】
    npm install element-ui
    
【安装方式二:(CDN 方式引入)】
    
    
    
     

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第1张图片

 

 

 

(3)引入 element-ui
  在 main.js 中引入(也可以自定义一个 js,然后在 main.js 中引入自定义的 js)。

// 引入 element-ui
import ElementUI from 'element-ui'
// 引入 element-ui 的 css 文件
import 'element-ui/lib/theme-chalk/index.css';
// 声明使用 element-ui
Vue.use(ElementUI);

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第2张图片

 

 

 

2、修改 App.vue

(1)简介
  页面主入口。
  通过 router 将组件 显示在 router-view 标签处。(基本路由规则到本文末尾可以看)

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第3张图片

 

 

 

(2)修改页面内容



 

3、404.vue

(1)简介
  定义错误页面。
  当错误发生时,用于跳转到 404 页面。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第4张图片

 

 

 

(2)定义页面内容





 

(3)页面显示如下:

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第5张图片

 

 

 

4、Login.vue

(1)简介
  定义登陆页面。
  访问系统时,用于跳转到登录界面。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第6张图片

 

 

 

背景图(来源于网络):

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第7张图片

 

 

 

(2)定义页面内容:



 

(3)页面显示如下:

 

 

 

二、定义主页面

  主页面 可以拆分成多个组件,每个组件负责一部分页面的显示。
  拆分成 Header、Aside、Content 三个页面。
其中:
  Header          用于定义导航栏信息
  Aside             用于定义菜单栏信息
  Content         用于显示各个菜单选项的页面

1、Home.vue

(1)简介
  定义主界面。
  通过 Login 登录系统后,需要跳转到 主页面。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第8张图片

 

 

 

(2)定义页面内容




 

(3)页面显示如下:

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第9张图片

 

 

 

2、Header.vue

(1)简介
  用于定义主页面的导航栏。
  通过导航栏,可以进行一些操作。比如:折叠侧边栏、修改密码、退出登录等。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第10张图片

 

 

 

(2)定义页面内容





 

(3)页面显示如下

 

 

 

3、UpdatePassword.vue

(1)简介
  定义密码修改框,用于修改用户密码。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第11张图片

 

 

 

(2)定义页面内容



 

(3)页面显示如下

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第12张图片

 

 

 

4、this.$nextTick 与 this.$emit 简单介绍

(1)this.$nextTick
  其用于数据渲染之后执行。
比如:
  修改了某个数据,这个数据需要 dom 更新之后才会显示出来,此时就可以使用 this.$nextTick。其传递一个回调函数,在数据渲染之后执行。

  在 Header.vue 中,就使用到了这个。如下所示:
    密码修改框通过 UpdatePasswordVisible 来控制是否显示。
    showPasswordBox() 方法被执行时,UpdatePassword 组件开始加载,数据渲染完成后触发 this.$nextTick 的回调函数,进行密码框的初始化。


if="UpdatePasswordVisible" ref="updatePassowrd">


// 展开密码修改框
showPasswordBox() {
    this.UpdatePasswordVisible = true
    // this.$nextTick 表示数据渲染后,执行密码框初始化
    this.$nextTick(() => {
        this.$refs.updatePassowrd.init()
    })
},

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第13张图片

 

 

 

  若立即使用 this.$refs.updatePassowrd.init() 调用 UpdatePassword 的 init 方法,会报错,因为此时的 UpdatePassword  数据还未渲染,若想成功执行,需要使用 this.$nextTick,表示在数据渲染成功后执行。

// 展开密码修改框
showPasswordBox() {
    this.UpdatePasswordVisible = true
    this.$refs.updatePassowrd.init()
},

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第14张图片

 

 

 

(2)this.$emit
  用于子组件向父组件传递数据,并触发父组件的方法。
  在Home.vue 与 Header.vue 中,就使用到了这个。如下所示:
    在 Home 组件里引入了 Header 组件,并定义了 @foldOrOpenAside 方法,
    在 Header 组件里通过 this.$emit 调用 foldOrOpenAside 方法,并传递数据(可选)。

【Home.vue】
foldOrOpen(data) { this.foldAside = data } 【Header.vue】
// 展开、折叠侧边栏 foldOrOpen() { this.foldAside = !this.foldAside // this.$emit 用于触发父组件的方法,并传递参数值 this.$emit("foldOrOpenAside", this.foldAside) },

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第15张图片

 

 

 

5、Aside.vue

(1)简介
  用于定义侧边栏,显示菜单。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第16张图片

 

 

 

(2)定义页面内容





 

(3)页面显示如下

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第17张图片

 

 

 

6、props 简单介绍

  其用于父组件向子组件传递数据。
  在 Home.vue 和 Aside.vue 中,就使用到了这个。如下所示:
    在 Home.vue 中引入 Aside.vue 组件,并定义了 :foldAside 属性。
    在 Aside.vue 组件中,使用 props 可以获取到 这个 属性。

【Home.vue】

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第18张图片

 

 

 

7、Content.vue

(1)简介
  用于定义各个菜单点击后的页面显示。

  同样需要使用 router 进行页面跳转(嵌套路由,通过 children 中的规则定义跳转路径),基本路由规则本文最后有介绍。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第19张图片

 

 

 

(2)定义页面内容





 

(3)页面显示如下

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第20张图片

 

 

 

8、定义 content 显示页面(仅供测试)

【Ueditor.vue】






【HomePage.vue】






【Echarts.vue】




 

点击 Aside 中各个菜单,在 Content 会显示不同的 页面。

SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第21张图片

 

 

 SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示_第22张图片

 

 

 

9、基本路由问题

(1)简介
  想要各个组件页面间能够顺利跳转,就需要 router 来操作了。
  此处简单写了路由跳转规则,后续会进行修改。

(2)定义路由跳转规则
  path 指的是 路径。
  redirect 指的是 需要跳转的路径。
  name 指的是 路由的名字(此项目中,均使用 name 进行路由跳转)。
  component 指的是 路由的组件,用于显示页面( 会加载组件)。
  children 指的是 子路由(路由中显示另一个路由)。

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const routes = [{
        path: '/',
        redirect: {
            name: "Login"
        }
    },
    {
        path: '/404',
        name: '404',
        component: () => import('@/components/common/404.vue')
    },
    {
        path: '/Login',
        name: 'Login',
        component: () => import('@/components/common/Login.vue')
    },
    {
        path: '/Home',
        name: 'Home',
        component: () => import('@/views/Home.vue'),
        redirect: {
            name: 'HomePage'
        },
        children: [{
                path: '/Home/Page',
                name: 'HomePage',
                component: () => import('@/views/menu/HomePage.vue')
            },
            {
                path: '/Home/Demo/Echarts',
                name: 'Echarts',
                component: () => import('@/views/menu/Echarts.vue')
            },
            {
                path: '/Home/Demo/Ueditor',
                name: 'Ueditor',
                component: () => import('@/views/menu/Ueditor.vue')
            }
        ]
    },
]

const router = new VueRouter({
    // routes 用于定义 路由跳转 规则
    routes,
    // mode 用于去除地址中的 #
    mode: 'history',
    // scrollBehavior 用于定义路由切换时,页面滚动。
    scrollBehavior: () => ({
        y: 0
    })
})

// 解决相同路径跳转报错
const routerPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location, onResolve, onReject) {
    if (onResolve || onReject)
        return routerPush.call(this, location, onResolve, onReject)
    return routerPush.call(this, location).catch(error => error)
};

export default router

 

你可能感兴趣的:(SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示)