返回

Express-Mysql-Vue3-TS-Pinia 项目实战:优雅的菜单展示

前端

技术栈简介

本项目将使用以下技术栈:

  • Express.js:Node.js 框架
  • MySQL:关系型数据库
  • Vue3:渐进式 JavaScript 框架
  • TypeScript:JavaScript 的超集,提供类型检查
  • Pinia:Vuex 的替代品,用于管理应用程序状态

菜单展示

菜单是后台系统中至关重要的元素,提供对系统不同功能的导航。在我们的项目中,我们将使用 Vue Router 来管理路由,并使用 Pinia 来管理菜单状态。

步骤 1:配置路由

src/router/index.ts 中,定义菜单路由:

import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'Home',
      component: HomeView,
    },
    {
      path: '/users',
      name: 'Users',
      component: UsersView,
    },
    // 添加其他菜单路由...
  ]
})

export default router

步骤 2:创建菜单组件

src/components/Menu.vue 中,创建菜单组件:

<template>
  <nav>
    <ul>
      <li v-for="item in menuItems" :key="item.name">
        <router-link :to="item.path">{{ item.name }}</router-link>
      </li>
    </ul>
  </nav>
</template>

<script>
import { defineComponent, ref } from 'vue'
import { useMenuStore } from '@/stores/menu'

export default defineComponent({
  setup() {
    const menuStore = useMenuStore()
    const menuItems = ref(menuStore.menuItems)

    return {
      menuItems,
    }
  }
})
</script>

步骤 3:使用 Pinia 管理菜单状态

src/stores/menu.ts 中,创建 Pinia 存储:

import { defineStore } from 'pinia'

export const useMenuStore = defineStore('menu', {
  state: () => ({
    menuItems: [
      { name: '主页', path: '/' },
      { name: '用户', path: '/users' },
      // 添加其他菜单项...
    ]
  }),

  // 其他操作...
})

集成菜单

src/App.vue 中,集成菜单组件:

<template>
  <div>
    <Menu />

    <router-view />
  </div>
</template>

<script>
import { defineComponent } from 'vue'
import Menu from '@/components/Menu.vue'

export default defineComponent({
  components: { Menu },
})
</script>

结语

通过遵循本指南,您将能够在 Express-Mysql-Vue3-TS-Pinia 项目中实现优雅的菜单展示。这个功能齐全的后台系统将为您提供一个坚实的基础,以构建强大的 Web 应用程序。