前端工作总结151-动态路由和表结构无关

简介: 前端工作总结151-动态路由和表结构无关
<template>
  <el-menu :unique-opened="true" :default-active="defaultActive" :router="true">
    <template v-for="item in routes">
      <el-submenu v-if="item.children" :index="item.text" :key="item.text">
        <template slot="title">
          <i v-if="item.icon" :class="item.icon" />
          <i v-else class="empty-icon" />
          {{ item.text }}
        </template>
        <el-menu-item
          v-for="subItem in item.children"
          :index="subItem.path"
          :key="subItem.name"
        >
          <i v-if="subItem.icon" :class="subItem.icon" />
          <i v-else class="empty-icon" />
          {{ subItem.text }}
        </el-menu-item>
      </el-submenu>
      <el-menu-item v-else :index="item.path" :key="item.name">
        <i v-if="item.icon" :class="item.icon" />
        <i v-else class="empty-icon" />
        {{ item.text }}
      </el-menu-item>
    </template>
  </el-menu>
</template>
<script>
import { staticRoutes, iconMap } from "../router/staticRoutes";
import { ACCESS_MODE } from "@/store/KeyConstants";
import Vue from "vue";
export default {
  name: "SideMenu",
  computed: {
    routes() {
      /*获取数据里面的控制业务端和营销端的mode数值*/
      const property = Vue.ls.get(ACCESS_MODE);
      /*const */
   /*   const showingMenu = staticRoutes.filter(item){
        return !item.hidden
      }*/
      /*去除里面的不是item.hidden是隐藏的属性*/
     const showingMenu = staticRoutes.filter(item => !item.hidden);
     /*拿出所有的菜单*/
      let menu = [];
      let pNames = new Set();
      /*for循环得出所需要的结构*/
      for (const item of showingMenu) {
        /*如果没有父亲级别菜单 就开始继续进行执行*/
        if (!item.meta.pName) {
          /*如果这个端是业务端 并且里面的name的数值不是没有大菜单 比较多的*/
          if (property == 1 && (item.name == "Order" || item.name == "Content"))
          {
          } else {
            /*否则就是业务端*/
            menu.push({
              path: item.path,
              name: item.name,
              icon: item.meta.icon,
              text: item.meta.text
            });
          }
          /*如果pnames有大菜单 */
        } else if (!pNames.has(item.meta.pName)) {
          /*就去除里面的pname*/
          const peers = showingMenu
            .filter(i => i.meta.pName === item.meta.pName)
            .map(i => ({
              path: i.path,
              name: i.name,
              icon: i.meta.icon,
              text: i.meta.text
            }));
          menu.push({
            text: item.meta.pName,
            icon: iconMap[item.meta.pName],
            children: peers
          });
          pNames.add(item.meta.pName);
        }
      }
      return menu;
    },
    defaultActive() {
      return this.$route.path;
    }
  },
  data() {
    return {};
  },
  methods: {}
};
</script>
<style lang="scss">
.el-menu {
  height: 100%;
}
.el-menu-item,
.el-submenu__title {
  .empty-icon {
    margin-right: 5px;
    width: 24px;
    display: inline-block;
  }
}
</style>
相关文章
|
6月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
7月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
413 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12月前
|
存储 JavaScript 前端开发
前端 vue:路由的高级使用
前端 vue:路由的高级使用
|
9月前
|
移动开发 缓存 前端开发
深入理解前端路由:原理、实现与应用
本书《深入理解前端路由:原理、实现与应用》全面解析了前端路由的核心概念、工作原理及其实现方法,结合实际案例探讨了其在现代Web应用中的广泛应用,适合前端开发者和相关技术人员阅读。
|
10月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
385 1
|
11月前
|
JavaScript 前端开发 API
前端技术分享:Vue.js 动态路由与守卫
【10月更文挑战第1天】前端技术分享:Vue.js 动态路由与守卫
|
12月前
|
资源调度 JavaScript 前端开发
前端vue:路由的基本使用
前端vue:路由的基本使用
|
12月前
|
移动开发 前端开发 JavaScript
浅谈前端路由原理hash和history
该文章详细解析了前端路由的两种模式——Hash模式与History模式的工作原理及其实现方式,并通过实例代码展示了如何在实际项目中运用这两种路由模式。
|
12月前
|
移动开发 缓存 前端开发
构建高效的前端路由系统:从原理到实践
在现代Web开发中,前端路由系统已成为构建单页面应用(SPA)不可或缺的核心技术之一。不同于传统服务器渲染的多页面应用,SPA通过前端路由技术实现了页面的局部刷新与无缝导航,极大地提升了用户体验。本文将深入剖析前端路由的工作原理,包括Hash模式与History模式的实现差异,并通过实战演示如何在Vue.js框架中构建一个高效、可维护的前端路由系统。我们还将探讨如何优化路由加载性能,确保应用在不同网络环境下的流畅运行。本文不仅适合前端开发者深入了解前端路由的奥秘,也为后端转前端或初学者提供了从零到一的实战指南。
|
前端开发
【前端web入门第五天】01 结构伪类选择器与伪元素选择器
本文介绍了CSS中的结构伪类选择器和伪元素选择器。结构伪类选择器如`nth-child`可根据元素结构关系进行选择,例如将列表中首个`&lt;li&gt;`元素背景设为绿色。伪元素选择器用于创建装饰性内容。
199 8

热门文章

最新文章