随笔 - 441  文章 - 4  评论 - 84  阅读 - 109万 

业务场景

不同的用户登录,看到的菜单会不一样,因此需要根据不同人登录的身份去后端获取菜单。

实现思路

1.构建路由

2.从后端构建菜单

3.前端获取菜单

4.前端渲染菜单

 

1.构建路由。

复制代码
export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },

  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [{
      path: 'dashboard',
      name: 'Dashboard',
      component: () => import('@/views/dashboard/index'),
      meta: { title: 'Dashboard', icon: 'dashboard' }
    }]
  },
复制代码

构建路由

复制代码
const createRouter = () => new Router({
  // mode: 'history', // require service support
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router
复制代码

2.从后台构建menu菜单

复制代码
@RequestMapping("/get")
    @ResponseBody
    public JSONArray menu(HttpServletResponse response) throws IOException {
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        sb.append("{");
        sb.append("    \"path\": \"/login\",");
        sb.append("        \"hidden\": true");
        sb.append("},");

        sb.append("{");
        sb.append("   \"path\": \"/404\",");
        sb.append("        \"hidden\": true");
        sb.append(" },");

        sb.append("{");
        sb.append("    \"path\": \"/\",");
复制代码

3.前端获取菜单

export function getMenu() {
  return request({
    url: '/menu/get',
    method: 'get'
  })
}

4.渲染菜单

复制代码
created() {
        
        getMenu().then( res => {
            this.routes=res.data;
          debugger
        }).catch(error => {
          console.info(error)
            debugger
        })
  }
复制代码

调用API获取菜单,并复制到 routes 中。

 <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />

 

posted on   自由港  阅读(847)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示