動態加載router,用Vue+Element UI搭建後臺管理系統界面

動態加載router,用Vue+Element UI搭建後臺管理系統界面

今天教大家用 Vue + Element UI 搭建一個後臺管理系統界面,首先講一下需要用到的組件標籤,重點是左側菜單欄的創建,Element UI 左側菜單的標籤有:

el-container:構建整個頁面框架。

el-aside:構建左側菜單。

el-menu:左側菜單內容,常用屬性如下。

  • :default-openeds:默認展開的菜單(針對父節點),通過菜單的 index 值關聯。
  • :default-active:默認選中的菜單(針對葉子結點),通過菜單的 index 值關聯。
<default-openeds>


/<default-openeds>

上述代碼表示打開 index 為 1 和 3 的父菜單,默認選中 index 為 3-4-1 的葉子結點。

el-submenu:可展開的菜單,常用屬性如下。

  • index:菜單下標,文本類型,不能是數值類型。


template:可展開的菜單名,每一個 el-submenu 都需要搭配一個 template,常用屬性如下。

  • slot="title" 設置樣式。


i:菜單圖片,通過 class 設置樣式,常用樣式如下。

  • class="el-icon-message"
  • class="el-icon-menu"
  • class="el-icon-setting"

el-menu-item:不可展開的菜單,葉子結點,常用屬性如下。

  • index:菜單下標。


我們用這些標籤來完成一個頁面,代碼如下所示。

<template>
<el-container>
<el-aside>
<el-menu>
<el-submenu>
<template>導航一/<template>
<el-menu-item>選項1/<el-menu-item>
<el-menu-item>選項2/<el-menu-item>

/<el-submenu>
<el-submenu>
<template>導航二/<template>
<el-menu-item>選項1/<el-menu-item>
<el-submenu>
<template>選項2/<template>
<el-menu-item>選項2-1/<el-menu-item>
/<el-submenu>
/<el-submenu>
<el-submenu>
<template>導航三/<template>
<el-submenu>
<template>選項1/<template>
<el-menu-item>選項1-1/<el-menu-item>
/<el-submenu>
<el-submenu>
<template>選項2/<template>
<el-menu-item>選項2-1/<el-menu-item>
/<el-submenu>
/<el-submenu>
/<el-menu>
/<el-aside>
/<el-container>
/<template>

運行結果如下圖所示。


動態加載router,用Vue+Element UI搭建後臺管理系統界面



用 Element UI 搭建起靜態頁面之後,接下來我們說說如何加載 router 的數據,來動態生成左側菜單。很簡單,通過 Vue 標籤語法動態讀取 router 配置即可,我們的目標菜單如下圖所示。


動態加載router,用Vue+Element UI搭建後臺管理系統界面


兩個一級菜單,每個一級菜單下對應兩個頁面,在 router.js 添加代碼如下所示。

import Vue from 'vue'
import Router from 'vue-router'
import Main from '@/components/Main'
import PageOne from '@/components/PageOne'
import PageTwo from '@/components/PageTwo'
import PageThree from '@/components/PageThree'
import PageFour from '@/components/PageFour'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: '導航1',
component: Main,
children:[
{
path: '/pageone',
name: '頁面1',
component: PageOne
},
{
path: '/pagetwo',
name: '頁面2',
component: PageTwo
}
]
},
{
path: '/navigation',
name: '導航2',
component: Main,
children:[
{
path: '/pagethree',
name: '頁面3',
component: PageThree
},
{
path: '/pagefour',
name: '頁面4',

component: PageFour
}
]
}
]
})

其中 Main 是主頁面,PageOne、PageTwo 為導航1下屬頁面,PageThree、PageFour 為導航2下屬頁面,結構很清晰,一目瞭然。

接下來在 Main.vue 中動態解析 router,生成菜單,代碼如下所示。

<template>
<el-container>
<el-aside>
<el-menu>
<el-submenu>
<template>{{item.name}}/<template>
<el-menu-item>{{item2.name}}/<el-menu-item>
/<el-submenu>
/<el-menu>
/<el-aside>
/<el-container>
/<template>

通過 v-for 循環遍歷 routes,動態生成 <el-submenu> 標籤,此為一級菜單,在內部繼續用 v-for 循環遍歷其 children,動態生成 <el-menu-item> 標籤,是二級菜單,給每個標籤設置不同的 index 值,否則會導致點擊事件錯亂,實際運行結果如下圖所示。/<el-menu-item>/<el-submenu>


動態加載router,用Vue+Element UI搭建後臺管理系統界面



菜單創建成功,接下來完成頁面與菜單選項的綁定。

1、<el-menu> 標籤添加 router 屬性。/<el-menu>

2、在頁面添加 <router-view> 標籤,它是一個容器,渲染的組件是你當前要跳轉的 router。/<router-view>

3、<el-menu-item> 標籤的 index 值就是要跳轉的頁面路徑。/<el-menu-item>

根據以上 3 條,修改 Main.vue 代碼如下所示。

<template>
<el-container>
<el-aside>
<el-menu>
<el-submenu>
<template>{{item.name}}/<template>
<el-menu-item>{{item2.name}}/<el-menu-item>
/<el-submenu>
/<el-menu>
/<el-aside>
<el-main>
<el-breadcrumb>
<el-breadcrumb-item>首頁/<el-breadcrumb-item>
<el-breadcrumb-item>
/<el-breadcrumb>
<router-view>
/<el-main>
/<el-container>
/<template>


這樣就實現了頁面跳轉,運行結果如下圖所示。


動態加載router,用Vue+Element UI搭建後臺管理系統界面


動態加載router,用Vue+Element UI搭建後臺管理系統界面


最後一個問題,當我們第一次訪問主頁面時,右側的子頁面為空,如下圖所示。


動態加載router,用Vue+Element UI搭建後臺管理系統界面


我們希望默認加載導航1的頁面1,如何實現呢?非常簡單,給主頁面設置重定向即可,修改主頁面 router 如下所示。

{
path: '/',
name: '導航1',
component: Main,
redirect: '/pageone',
children:[
{
path: '/pageone',
name: '頁面1',
component: PageOne
},
{
path: '/pagetwo',
name: '頁面2',
component: PageTwo
}
]
}

添加了 redirect: '/pageone',即加載主頁面之後會自動跳轉到 /pageone,接下來設置導航1中的頁面1選項默認選中,具體實現是在循環中判斷系統的 router 是否等於當前頁面的 router,成立則設置 class="is-active",如下所示。

<el-menu-item> :class="$route.path==item2.path?'is-active':''">{{item2.name}}/<el-menu-item>

再次訪問 http://localhost:8080,結果如下圖所示。

動態加載router,用Vue+Element UI搭建後臺管理系統界面

以上就是用 Vue + Element UI 動態搭建後臺管理系統界面的步驟,你學會了嗎?

關注微信公眾號「Java大聯盟」,關注即可獲取海量學習乾貨,同時還有不定期送書,鍵盤,鼠標等粉絲福利。

動態加載router,用Vue+Element UI搭建後臺管理系統界面

趕快來關注一波,海量資源拿到手軟。



分享到:


相關文章: