返回

Vue Element Admin 后台管理系统侧边栏导航实战

前端

在 Vue 生态中,Element UI 是一个流行的前端 UI 框架,提供了一系列强大的组件和工具来构建用户界面。本文将指导你使用 Element UI 构建一个功能齐全的后台管理系统侧边栏导航栏,让你能够轻松管理应用程序的菜单和导航。

前置条件

在开始之前,你需要确保已经安装了以下软件:

  • Vue.js
  • Element UI
  • Node.js 和 npm

从零开始构建侧边栏导航栏

1. 初始化项目

创建一个新的 Vue 项目并安装 Element UI:

vue create vue-element-admin
cd vue-element-admin
npm install element-ui

2. 创建导航栏组件

src 目录中创建一个名为 Sidebar.vue 的新文件,并添加以下代码:

<template>
  <el-menu
    :default-openeds="defaultOpened"
    router
    class="el-menu-demo"
    mode="vertical"
    background-color="#334155"
    text-color="#bfcbd9"
    active-text-color="#409EFF"
  >
    <el-menu-item index="1" to="/home">
      <i class="el-icon-menu"></i>
      <span slot="title">首页</span>
    </el-menu-item>
    <el-submenu index="2">
      <template slot="title">
        <i class="el-icon-setting"></i>
        <span>设置</span>
      </template>
      <el-menu-item index="2-1" to="/setting/user">
        <span slot="title">用户管理</span>
      </el-menu-item>
      <el-menu-item index="2-2" to="/setting/role">
        <span slot="title">角色管理</span>
      </el-menu-item>
    </el-submenu>
    <el-menu-item index="3" to="/about">
      <i class="el-icon-info"></i>
      <span slot="title">关于</span>
    </el-menu-item>
  </el-menu>
</template>

<script>
export default {
  data() {
    return {
      defaultOpened: ['1', '3'],
    };
  },
};
</script>

<style>
.el-menu {
  border-right: none;
}
.el-menu--collapse .el-menu-item {
  height: 36px;
  line-height: 36px;
}
</style>

3. 注册组件

src/main.js 中注册 Sidebar 组件:

import Sidebar from './components/Sidebar.vue';

Vue.component('sidebar', Sidebar);

4. 使用侧边栏组件

在需要显示侧边栏的位置添加以下代码:

<sidebar></sidebar>

通过后台接口动态渲染菜单

为了使导航栏更加灵活,我们可以通过后台接口动态渲染菜单数据。

1. 获取菜单数据

在 Vuex store 中创建获取菜单数据的 action:

import axios from 'axios';

export const getMenus = async ({ commit }) => {
  const { data } = await axios.get('/api/menus');
  commit('SET_MENUS', data);
};

2. 存储菜单数据

在 Vuex store 中创建存储菜单数据的 mutation:

export const SET_MENUS = (state, menus) => {
  state.menus = menus;
};

3. 渲染菜单

Sidebar 组件中,使用 computed 属性从 store 中获取菜单数据并渲染:

<template>
  <el-menu
    :default-openeds="defaultOpened"
    router
    class="el-menu-demo"
    mode="vertical"
    background-color="#334155"
    text-color="#bfcbd9"
    active-text-color="#409EFF"
  >
    <el-menu-item v-for="menu in menus" :key="menu.id" :index="menu.id" :to="menu.path">
      <i :class="menu.icon"></i>
      <span slot="title">{{ menu.title }}</span>
    </el-menu-item>
  </el-menu>
</template>

<script>
import { mapGetters } from 'vuex';

export default {
  computed: {
    ...mapGetters(['menus']),
  },
};
</script>

总结

通过使用 Element UI 和 Vuex,我们已经成功构建了一个功能齐全的后台管理系统侧边栏导航栏。该导航栏可以根据后台接口动态渲染菜单数据,使管理应用程序的导航更加灵活和高效。本教程提供了逐步指导,让你能够轻松地在自己的 Vue 项目中实施类似的侧边栏导航功能。