Vue前端项目-首页-动态菜单

本文介绍如何将Vue项目的静态侧边栏菜单改造为动态生成,并通过Vuex进行权限管理。详细讲解了从修改侧边栏组件、更新getters.js,到创建permission模块和app模块,以及在vuex中添加新模块的过程。同时,还涉及SidebarItem组件的实现,包括验证工具类、菜单项组件和链接组件的创建。
摘要由CSDN通过智能技术生成

目录

1、侧边栏组件

1.1 侧边栏组件

1.2、getters.js

1.3、permission 模块

1.4、app 模块

1.5、vuex中添加新模块

1.6、样式文件

1.7、变量scss文件

2、SidebarItem 组件

2.1 SidebarIntem 组件

2.2、验证工具类

2.3、菜单项组件

2.4 链接组件


在完成 <首页-获取路由信息> 和 <首页-svg图标> 这两章后,本章将之前的<主页布局-左侧导航菜单(静态)>改造为动态菜单

效果图:

1、侧边栏组件

原来静态菜单中,我们是写死的,现在需要改造成动态生成组件的形式

1.1 侧边栏组件

修改 src / layout / components / Sidebar / index.vue 

<template>
  <div class="">
    <el-scrollbar class="scrollbar-wrapper">
      <el-menu
        :default-active="activeMenu"
        :collapse="isCollapse"
        :background-color="variables.menuBg"
        :text-color="variables.menuText"
        :unique-opened="true"
        :active-text-color="variables.menuActiveText"
        :collapse-transition="false"
        mode="vertical"
      >
        <sidebar-item
          v-for="route in permission_routes"
          :key="route.path"
          :item="route"
          :base-path="route.path"
        ></sidebar-item>
      </el-menu>
    </el-scrollbar>
  </div>
</template>

<script type="text/ecmascript-6">
import { mapGetters } from 'vuex'
import SidebarItem from './SidebarItem'
import variables from '@/assets/styles/variables.scss'
export default {
  data() {
    return {}
  },
  components: { SidebarItem },
  methods: {
    handleOpen(key, keyPath) {
      console.log(key, keyPath)
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath)
    }
  },
  computed: {
    ...mapGetters(['permission_routes', 'sidebar']),
    activeMenu() {
      const route = this.$route
      const { meta, path } = route
      // if set path, the sidebar will highlight the path you set
      if (meta.activeMenu) {
        return meta.activeMenu
      }
      return path
    },
    variables() {
      return variables
    },
    isCollapse() {
      return !this.sidebar.opened
    }
  }
}
</script>

<style lang="scss" scoped>
</style>

1.2、getters.js

修改 src / store / getters.js 文件

const getters = {
  roles: state => state.user.roles,
  permission_routes: state => state.permission.routes,
  sidebar: state => state.app.sidebar
}
export default getters

1.3、permission 模块

新建 src / store / modules / permission.

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值