返回

Vite2 + vue3 + TS + ElementPlus 构建后台管理系统——Breadcrumb 和 TagsView

前端

准备工作

在开始之前,请确保你已经完成了上一章的内容,并且已经安装了 Vite2、vue3、TypeScript 和 ElementPlus。

面包屑组件

面包屑组件用于显示用户当前所处的页面位置,它可以帮助用户快速了解自己的位置,并方便他们返回到之前的页面。

安装依赖

首先,我们需要安装面包屑组件的依赖:

npm install element-plus

创建组件

src/components 目录下创建一个 Breadcrumb.vue 文件,并添加以下代码:

<template>
  <el-breadcrumb separator="/">
    <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
    <el-breadcrumb-item>用户管理</el-breadcrumb-item>
    <el-breadcrumb-item>用户列表</el-breadcrumb-item>
  </el-breadcrumb>
</template>

<script>
export default {
  name: 'Breadcrumb',
  props: {
    routes: {
      type: Array,
      required: true
    }
  },
  computed: {
    breadcrumbList() {
      return this.routes.map(route => {
        return {
          path: route.path,
          name: route.name
        }
      })
    }
  }
}
</script>

使用组件

在需要使用面包屑组件的地方,我们可以直接引入 Breadcrumb.vue 组件,并传入 routes 属性。例如,在 src/views/Home.vue 文件中,我们可以添加以下代码:

<template>
  <div>
    <Breadcrumb :routes="routes" />
    <h1>首页</h1>
  </div>
</template>

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

export default {
  name: 'Home',
  components: {
    Breadcrumb
  },
  data() {
    return {
      routes: [
        {
          path: '/',
          name: '首页'
        }
      ]
    }
  }
}
</script>

标签页组件

标签页组件用于显示当前打开的多个页面,它可以帮助用户快速切换到不同的页面,并方便地管理多个页面。

安装依赖

首先,我们需要安装标签页组件的依赖:

npm install element-plus

创建组件

src/components 目录下创建一个 TagsView.vue 文件,并添加以下代码:

<template>
  <el-tabs v-model="activeIndex" @tab-click="handleClick">
    <el-tab-pane v-for="tag in tagsViewList" :key="tag.path" :label="tag.name" :name="tag.path">
      <router-view />
    </el-tab-pane>
  </el-tabs>
</template>

<script>
import { computed, ref } from 'vue'
import { useRoute } from 'vue-router'

export default {
  name: 'TagsView',
  setup() {
    const route = useRoute()
    const activeIndex = ref(route.path)
    const tagsViewList = computed(() => {
      const matched = route.matched
      return matched.map(item => {
        return {
          path: item.path,
          name: item.meta.title
        }
      })
    })

    const handleClick = (tab, event) => {
      activeIndex.value = tab.name
    }

    return {
      activeIndex,
      tagsViewList,
      handleClick
    }
  }
}
</script>

使用组件

在需要使用标签页组件的地方,我们可以直接引入 TagsView.vue 组件。例如,在 src/views/Layout.vue 文件中,我们可以添加以下代码:

<template>
  <div class="layout">
    <Header />
    <Sidebar />
    <div class="main">
      <TagsView />
      <router-view />
    </div>
  </div>
</template>

<script>
import Header from '@/components/Header.vue'
import Sidebar from '@/components/Sidebar.vue'
import TagsView from '@/components/TagsView.vue'

export default {
  name: 'Layout',
  components: {
    Header,
    Sidebar,
    TagsView
  }
}
</script>

总结

至此,我们就完成了面包屑组件和标签页组件的开发。在下一章中,我们将继续完善 header 组件,并添加一些常用的功能。