当前位置:首页 > 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 组件

vue实现sdk导航栏

<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>

添加导航栏交互功能

实现下拉菜单功能

vue实现sdk导航栏

<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'] }
}

标签: vuesdk
分享给朋友:

相关文章

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现接口

vue实现接口

在 Vue 中实现接口请求 Vue 本身不直接提供 HTTP 请求功能,通常需要借助第三方库如 axios 或 fetch 来实现接口请求。以下是几种常见方法: 使用 axios 发送请求 安装 a…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目 使…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue广播实现

vue广播实现

vue广播实现 在Vue中实现广播功能可以通过事件总线(Event Bus)或Vuex来完成。以下是两种常见的实现方式: 使用事件总线(Event Bus) 事件总线是一种简单的跨组件通信方式,适用…