当前位置:首页 > VUE

vue实现sdk导航栏

2026-01-12 04:56:01VUE

Vue 实现 SDK 导航栏

使用 Vue Router 实现基础导航

安装 Vue Router 依赖包
npm install vue-router

在项目中创建路由配置文件

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import Features from '../views/Features.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/features', component: Features }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

在主入口文件挂载路由

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

创建导航栏组件

新建 NavBar.vue 组件

<template>
  <nav>
    <router-link to="/">Home</router-link>
    <router-link to="/features">Features</router-link>
  </nav>
</template>

<script>
export default {
  name: 'NavBar'
}
</script>

<style scoped>
nav {
  display: flex;
  gap: 1rem;
  padding: 1rem;
  background: #f0f0f0;
}
.router-link-active {
  font-weight: bold;
}
</style>

实现动态导航菜单

通过路由元信息配置导航项

const routes = [
  {
    path: '/',
    component: Home,
    meta: { navTitle: '首页' }
  },
  {
    path: '/features',
    component: Features,
    meta: { navTitle: '功能特性' }
  }
]

修改导航组件使用动态渲染

<template>
  <nav>
    <router-link
      v-for="route in visibleRoutes"
      :key="route.path"
      :to="route.path"
    >
      {{ route.meta.navTitle }}
    </router-link>
  </nav>
</template>

<script>
export default {
  computed: {
    visibleRoutes() {
      return this.$router.options.routes.filter(
        route => route.meta && route.meta.navTitle
      )
    }
  }
}
</script>

添加导航栏交互功能

实现下拉菜单功能

<template>
  <nav>
    <div class="nav-item" v-for="group in menuGroups" :key="group.title">
      <button @click="toggleMenu(group)">
        {{ group.title }}
      </button>
      <div v-if="activeMenu === group.title" class="dropdown">
        <router-link
          v-for="item in group.items"
          :key="item.path"
          :to="item.path"
        >
          {{ item.title }}
        </router-link>
      </div>
    </div>
  </nav>
</template>

<script>
export default {
  data() {
    return {
      activeMenu: null,
      menuGroups: [
        {
          title: '产品',
          items: [
            { path: '/features', title: '核心功能' },
            { path: '/pricing', title: '价格方案' }
          ]
        }
      ]
    }
  },
  methods: {
    toggleMenu(group) {
      this.activeMenu = this.activeMenu === group.title ? null : group.title
    }
  }
}
</script>

<style>
.dropdown {
  position: absolute;
  background: white;
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
</style>

响应式导航栏实现

添加移动端适配

<template>
  <nav>
    <button @click="toggleMobileMenu">菜单</button>
    <div :class="{ 'mobile-hidden': !showMobileMenu }">
      <router-link to="/">首页</router-link>
      <router-link to="/features">功能</router-link>
    </div>
  </nav>
</template>

<script>
export default {
  data() {
    return {
      showMobileMenu: false
    }
  },
  methods: {
    toggleMobileMenu() {
      this.showMobileMenu = !this.showMobileMenu
    }
  }
}
</script>

<style>
@media (max-width: 768px) {
  .mobile-hidden {
    display: none;
  }
  nav {
    flex-direction: column;
  }
}
</style>

导航栏权限控制

根据用户权限显示不同导航项

<script>
export default {
  computed: {
    filteredRoutes() {
      const userRole = 'admin' // 实际从store或API获取
      return this.$router.options.routes.filter(route => {
        return !route.meta || !route.meta.roles || route.meta.roles.includes(userRole)
      })
    }
  }
}
</script>

路由配置添加权限元信息

{
  path: '/admin',
  component: Admin,
  meta: { roles: ['admin'] }
}

vue实现sdk导航栏

标签: vuesdk
分享给朋友:

相关文章

vue实现头像剪切

vue实现头像剪切

Vue 实现头像剪切的实现方法 使用 vue-cropperjs 库 vue-cropperjs 是一个基于 cropperjs 的 Vue 组件,专门用于图片裁剪。安装方式如下: npm inst…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="w…