当前位置: 首页 > news >正文

Vue router-view和router-link分开写在不同的组件中实现导航栏切换界面

背景:

编写一个后台界面,要求左边有导航栏,后边根据左边的导航栏选择显示不同的组件。

结构:

红色区域为主体组件,黄绿色为导航组件,蓝色为导航条目对应的组件。

实现思路:

在AdminFrame.vue中放置Sidebar.vue组件,和<router-view />标签。

在Sidebar.vue中放置<router-link/>标签实现路由切换,然后引起AdminFrame.vue中的router-view渲染出不同的组件。

代码:

1. 路由配置

{path: "/AdminFrame",name: "AdminFrame",component: AdminFrame,      // 父组件 - 包含布局children: [                 // 子路由 - 在父组件的 router-view 中显示{path: "User",           // → /AdminFrame/Username: "User",component: User},{path: "Classify",       // → /AdminFrame/Classifyname: "Classify",component: Classify},{path: "Article",        // → /AdminFrame/Article  name: "Article", component: Article}]
}

2. Sidebar.vue - 只包含导航菜单

<template><div class="sidebar"><div class="sidebar-header"><h2>管理后台</h2></div><nav class="nav-menu"><!-- 使用 router-link 导航到子路由 --><router-link to="/AdminFrame/User" class="nav-item"active-class="active"><i class="fas fa-users"></i><span>用户管理</span></router-link><router-link to="/AdminFrame/Classify" class="nav-item"active-class="active"><i class="fas fa-folder"></i><span>分类管理</span></router-link><router-link to="/AdminFrame/Article" class="nav-item"active-class="active"><i class="fas fa-file-alt"></i><span>文章管理</span></router-link></nav></div>
</template><script>
export default {name: 'Sidebar'
}
</script><style scoped>
.sidebar {width: 250px;background: #2c3e50;color: white;min-height: 100vh;
}.sidebar-header {padding: 20px;border-bottom: 1px solid #34495e;text-align: center;
}.sidebar-header h2 {margin: 0;color: white;
}.nav-menu {padding: 20px 0;
}.nav-item {display: flex;align-items: center;padding: 15px 20px;color: #bdc3c7;text-decoration: none;transition: all 0.3s;border-left: 4px solid transparent;
}.nav-item:hover {background: #34495e;color: white;
}.nav-item.active {background: #3498db;color: white;border-left-color: #2ecc71;
}.nav-item i {width: 20px;margin-right: 10px;
}
</style>

3. AdminFrame.vue - 包含布局和 router-view

<template><div class="admin-frame"><!-- 引入侧边栏组件 --><Sidebar /><!-- 主内容区域 - 子路由在这里显示 --><main class="main-content"><router-view /></main></div>
</template><script>
import Sidebar from './Sidebar.vue'export default {name: 'AdminFrame',components: {Sidebar}
}
</script><style scoped>
.admin-frame {display: flex;min-height: 100vh;
}.main-content {flex: 1;padding: 20px;background-color: #f5f7fa;
}
</style>

4. 子组件示例(User.vue)

<template><div class="user-management"><h1>用户管理</h1><div class="content"><p>用户管理页面内容...</p><!-- 用户列表、表格等 --></div></div>
</template><script>
export default {name: 'User'
}
</script><style scoped>
.user-management {background: white;padding: 30px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
</style>
http://www.dtcms.com/a/453281.html

相关文章:

  • Wan2.2-Animate V2版 - 一键替换视频角色,实现角色动作及表情同步迁移替换 支持50系显卡 ComfyUI工作流 一键整合包下载
  • Coordinate Attention for Efficient Mobile Network Design 学习笔记
  • 初识MYSQL —— 数据类型
  • 大型网站建设行情南通专业网站设计制作
  • 【AI智能体】Coze 打造AI数字人视频生成智能体实战详解:从0到1构建可交互虚拟主播
  • LabVIEW使用3D场景光照
  • 河北建设厅网站修改密码在哪wordpress 前台 很慢
  • 数字设计 综合工具 yosys 源码安装与应用简介
  • HikariCP 连接池完全指南
  • 绵竹网站建设大连装修公司
  • C++空值初始化利器:empty.h使用指南
  • 电子版康奈尔笔记写作方案对比
  • (3)SwiftUI 的状态之上:数据流与架构(MVVM in SwiftUI)
  • 郴州网站seo个人兴趣网站设计
  • wordpress企业站源码做qq群头像网站
  • Vue和React怎么选?全面比对
  • C++之再谈类与对象
  • 巫山做网站那家好企业网站的建立
  • 深度学习基础:从原理到实践——第一章感知机(中)
  • 企业网站策划怎么样揭阳模板网站建站
  • 计算机网络第四章(8)——网络层《ICMB网际控制协议》
  • 网络教育网站如何做营销推广做ppt必备网站
  • 移植到Linux,Avalonia初次尝试意外美好
  • asp网站管理系统源码免费申请163邮箱
  • 欧拉公式剖析
  • 冲刺校招 打卡 day02
  • 【精品资料鉴赏】312页WORD 详解发电企业数字化转型规划方案()
  • 进阶 C++ 学习总结与核心感悟
  • gRPC从0到1系列【24】
  • 无锡设计师网站又拍云wordpress全站cdn