今天教大家用 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>
運行結果如下圖所示。
用 Element UI 搭建起靜態頁面之後,接下來我們說說如何加載 router 的數據,來動態生成左側菜單。很簡單,通過 Vue 標籤語法動態讀取 router 配置即可,我們的目標菜單如下圖所示。
兩個一級菜單,每個一級菜單下對應兩個頁面,在 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>
菜單創建成功,接下來完成頁面與菜單選項的綁定。
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>
這樣就實現了頁面跳轉,運行結果如下圖所示。
最後一個問題,當我們第一次訪問主頁面時,右側的子頁面為空,如下圖所示。
我們希望默認加載導航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,結果如下圖所示。
以上就是用 Vue + Element UI 動態搭建後臺管理系統界面的步驟,你學會了嗎?
關注微信公眾號「Java大聯盟」,關注即可獲取海量學習乾貨,同時還有不定期送書,鍵盤,鼠標等粉絲福利。
閱讀更多 楠哥教你學Java 的文章