vue element-ui实现动态面包屑导航

一、概述

面包屑导航是指网站或应用程序主导航之外的一种辅助性导航元素。随着单页应用(SPA)的普及,动态面包屑导航也变得越来越常见。Vue Element-UI提供了很好的组件支持,可以轻松实现动态面包屑导航的功能。

二、步骤

  1. 安装Vue和Element-UI

在Vue Element-UI中使用动态面包屑导航功能,需要先安装Vue和Element-UI。可以使用npm或yarn进行安装(本示例中将使用npm):

npm install vue
npm install element-ui
  1. 创建路由

创建Vue Router路由配置文件并进行配置。在每个路由对象中,需要设置“meta”字段来存储动态面包屑导航信息。例如:

const router = new VueRouter({
  routes: [
    {
      path: '/home',
      name: 'home',
      component: Home,
      meta: {
        title: '首页'
      }
    },
    {
      path: '/user',
      name: 'user',
      component: User,
      meta: {
        title: '用户管理',
        breadcrumb: true
      },
      children: [
        {
          path: 'list',
          name: 'user-list',
          component: UserList,
          meta: {
            title: '用户列表'
          }
        },
        {
          path: 'edit/:id',
          name: 'user-edit',
          component: UserEdit,
          meta: {
            title: '编辑用户'
          }
        }
      ]
    }
  ]
})

在这个示例中,/home和/user/list路由对象中都设置了“meta”信息,/user和/user/edit/:id没有设置。同时,示例中有一个nested路由/user,表示用户管理页面下还可以再进行更深层次的子路由。

  1. 创建组件

在创建Vue组件时,可以使用$route对象来获取当前页面的信息。这个信息可以是路由参数,也可以是meta信息。

示例代码:

<template>
  <el-breadcrumb separator="/">
    <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
    <el-breadcrumb-item v-for="(item, index) in breadcrumbList" :key="item.name" :to="{ path: item.path }">{{ item.title }}</el-breadcrumb-item>
  </el-breadcrumb>
</template>

<script>
export default {
  data () {
    return {
      breadcrumbList: []
    }
  },
  mounted () {
    this.getBreadcrumb()
  },
  watch: {
    $route () {
      this.getBreadcrumb()
    }
  },
  methods: {
    getBreadcrumb () {
      const matched = this.$route.matched.filter(item => item.meta.breadcrumb)

      if (matched.length === 0) {
        this.breadcrumbList = []
      } else {
        this.breadcrumbList = matched.map(item => {
          return {
            name: item.name,
            path: item.path,
            title: item.meta.title
          }
        })
      }
    }
  }
}
</script>

在这个示例中,我们新建了一个动态面包屑导航组件,并通过$watch监听$route变化。在组件mounted生命周期中,调用了getBreadcrumb方法。

getBreadcrumb方法是核心方法,它首先通过this.$route.matched获取匹配的路由对象数组,然后过滤掉没有设置breadcrumb的路由对象。如果没有匹配到任何路由对象,则面包屑导航数组为空;否则,根据匹配到的路由对象数组map,并返回一个新的对象数组,对象中包括name、path以及title属性。

  1. 使用组件

然后,在需要应用动态面包屑导航的页面/组件中使用Breadcrumb组件。

<template>
  <div>
    // 具体页面内容
    <breadcrumb></breadcrumb>
  </div>
</template>

<script>
import Breadcrumb from '@/components/Breadcrumb.vue'

export default {
  components: {
    Breadcrumb
  }
}
</script>

备注:这里的breadcrumb标签就是在新建组件Breadcrumb时注册的组件名称。

  1. 完成

至此,应用动态面包屑导航的功能已经全部完成。在通过左侧导航栏进入“用户管理”模块,即可看到动态生成的面包屑导航。

三、示例

下面给出一个较为具体的示例,演示如何在ElementUI中使用动态面包屑导航。

  1. 安装Vue和ElementUI
npm install vue
npm install element-ui
  1. 创建路由

在router/index.js中,新建路由对象,并在每个路由对象中设置“meta”字段来存储动态面包屑导航信息。当前示例中,我们设置了3个路由对象:首页(/home)、用户管理(/user)、用户列表(/user/list)。

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home.vue'
import User from '@/components/User.vue'
import UserList from '@/components/UserList.vue'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      redirect: '/home'
    },
    {
      path: '/home',
      name: 'home',
      component: Home,
      meta: {
        title: '首页'
      }
    },
    {
      path: '/user',
      name: 'user',
      redirect: '/user/list',
      component: User,
      meta: {
        title: '用户管理',
        breadcrumb: true
      },
      children: [
        {
          path: 'list',
          name: 'user-list',
          component: UserList,
          meta: {
            title: '用户列表'
          }
        }
      ]
    }
  ]
})
  1. 创建组件

在src/components/Breadcrumb.vue中,新建组件Breadcrumb,并通过$route对象获取当前页面的信息,从而动态生成面包屑导航。

<template>
  <el-breadcrumb separator="/">
    <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
    <el-breadcrumb-item v-for="(item, index) in breadcrumbList" :key="item.name" :to="{ path: item.path }">{{ item.title }}</el-breadcrumb-item>
  </el-breadcrumb>
</template>

<script>
export default {
  data () {
    return {
      breadcrumbList: []
    }
  },
  mounted () {
    this.getBreadcrumb()
  },
  watch: {
    $route () {
      this.getBreadcrumb()
    }
  },
  methods: {
    getBreadcrumb () {
      const matched = this.$route.matched.filter(item => item.meta.breadcrumb)

      if (matched.length === 0) {
        this.breadcrumbList = []
      } else {
        this.breadcrumbList = matched.map(item => {
          return {
            name: item.name,
            path: item.path,
            title: item.meta.title
          }
        })
      }
    }
  }
}
</script>
  1. 使用组件

在src/components/UserList.vue中,应用面包屑导航组件,并通过向其中传递一个固定的列表项,演示动态生成面包屑导航的效果。

<template>
  <div>
    <b-crumb :items="list"></b-crumb>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="gender" label="性别"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
    </el-table>
  </div>
</template>

<script>
import Breadcrumb from '@/components/Breadcrumb.vue'

export default {
  components: {
    Breadcrumb
  },
  data () {
    return {
      list: [
        { path: '/', name: '首页' },
        { path: '/user', name: '用户管理' },
        { path: '/user/list', name: '用户列表' }
      ],
      tableData: [{
        name: '张三',
        gender: '男',
        age: 28
      }, {
        name: '李四',
        gender: '女',
        age: 30
      }]
    }
  }
}
</script>

<style scoped>
.el-breadcrumb {
  margin-bottom: 10px;
}
</style>

到这里,动态面包屑导航已经实现了。

四、总结

Vue Element-UI提供了很好的组件支持,可以轻松实现动态面包屑导航的功能。通过跟随路由配置文件中的meta信息,结合组件的生命周期方法及$route对象的动态属性变化,可以简单实现动态生成面包屑导航的效果。最后,由于动态面包屑导航需要根据路由实现,维护路由的完整性及一致性是关键,需要在路由开发中做好规划和设计。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue element-ui实现动态面包屑导航 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • AngularJs E2E Testing 详解

    AngularJs E2E Testing 详解 在开发应用程序的过程中,我们需要确保这些程序在部署后正常运行。为了验证这些应用程序的功能,我们需要进行端到端 (End to End, E2E) 测试。 E2E 测试是一个自动化的过程,通过验证应用程序的模拟场景来模仿真实用户的行为。通过这种方式我们可以测试到所有层级,包括用户界面、功能、维护性、性能等。An…

    JavaScript 2023年6月10日
    00
  • 整理的比较不错的JavaScript的方法和技巧

    下面为您详细讲解整理的比较不错的JavaScript的方法和技巧的攻略。 攻略概述 在JavaScript开发中,除了了解一些基本语法外,还需要了解一些实用的方法和技巧,以提高自己的开发效率和代码质量。下面就分别介绍一些比较有用的方法和技巧。 1. 遍历操作 遍历操作是JavaScript开发中经常使用的方法,在遍历过程中,我们可以使用循环语句和一些高阶函数…

    JavaScript 2023年5月18日
    00
  • 一个批量编码转换及ASP/JS加解密/简繁转换的工具

    首先,这个工具包含三个主要功能,即批量编码转换、ASP/JS加解密和简繁转换。下面我们分别来讲解。 批量编码转换 这个功能可以将多个文件中的编码方式批量地转换为指定的编码方式。步骤如下: 打开工具界面,点击“批量编码转换”按钮; 选择需要转换的文件夹,并选择原始编码和目标编码方式; 点击“开始转换”按钮,等待转换完成即可。 例如,如果你有一些文件使用的是GB…

    JavaScript 2023年5月19日
    00
  • 最全的JavaScript开发工具列表 总有一款适合你

    最全的JavaScript开发工具列表 总有一款适合你 如今,JavaScript作为一门广受欢迎的编程语言,已经成为前端开发的基础。因此,选择合适的JavaScript开发工具是非常重要的。在本篇文章中,将为大家介绍最全的JavaScript开发工具列表,帮助读者找到最适合自己的开发工具。 一、编译工具 Babel Babel是一个由JavaScript编…

    JavaScript 2023年5月18日
    00
  • JS内部事件机制之单线程原理

    JS内部事件机制是指JavaScript在运行时的一种消息传递机制。其基本原理是采用单线程模型,即所有的任务都在同一个线程中执行,并且采用事件循环的机制来管理和调度任务。以下是JS内部事件机制之单线程原理的完整攻略: 什么是JS内部事件机制? JS内部事件机制是指JavaScript运行时的一种机制,用于管理和调度任务,其原理是采用单线程模型,即所有的任务都…

    JavaScript 2023年6月11日
    00
  • 总结JavaScript中BigIn函数常见的属性

    下面是讲解总结JavaScript中BigIn函数常见属性的完整攻略。 1. BigInt函数的介绍 BigInt是JavaScript中的一个新特性,是一种全新的数字类型。BigInt类型可以表示任意大的整数,而不是限制在Number类型的最大安全整数范围内。BigInt类型使用类似整数的语法来表示,但需要在数字末尾添加一个n后缀。 2. BigInt函数…

    JavaScript 2023年5月28日
    00
  • JavaScript中的变量声明你知道吗

    当我们使用JavaScript编写程序时,变量是最常用的数据类型之一。在开始编写任何JavaScript程序之前,都需要了解变量的声明和使用方式,以确保代码的正确性和可读性。 变量声明 在JavaScript中,有三种声明变量的方式:使用var、let和const关键字。其中,var和let可以用来声明可变变量,而const用来声明常量。 使用var声明变量…

    JavaScript 2023年5月18日
    00
  • vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件附踩坑日记!

    vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件附踩坑日记! 背景 语音识别技术的普及使得语音转写逐渐成为电脑输入的重要方式之一,而实时语音转写更是越来越多的应用场景。本文介绍如何在VS Code中开发一个语音实时转写插件,并将实时转写的结果保存到本地mp3文件中。 准备 在进行实时语音转写插件的开发之前,需要准备以下工具和环境: 麦克风及…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部