开发环境
Win 10
node-v10.15.3-x64.msi
下载地址:
https://nodejs.org/en/
需求场景
如下图,我们希望点击导航栏不同菜单时,导航栏下方加载不同的组件,进而展示不同的页面内容
解决方案
使用动态路由
新建home.vue作为子页面组件
<template> <div> <h3>home Page</h3> <p>home page content</p> </div> </template> <script> export default { name: "homePage", }; </script> <style scoped> h3 { font-size: 30px; } </style>
新建nav1.vue作为子页面组件
<template> <div> <h3>nav1 Page</h3> <p>nav1 page content</p> </div> </template> <script> export default { name: "nav1Page", }; </script> <style scoped> h3 { font-size: 30px; } </style> 新建index.vue作为父页面 <template> <div class="container"> <div class="nav"> <ul> <li> <a @click="clickHome">首页</a> </li> <li> <a @click="clickNav1">导航1</a> </li> </ul> </div> <div class="content"> <router-view></router-view> </div> </div> </template> <script> export default { methods: { clickHome() { this.$router.push("/index/home"); }, clickNav1() { this.$router.push("nav1"); } } }; </script> <style> .nav ul { width: 100%; height: 30px; margin: 5px; padding: 0; } .nav ul li { float: left; /*横排显示*/ list-style-type: none; /*去掉前面的点*/ } .nav ul li a { width: 100px; display: block; /*设置为block,width才起作用*/ height: 28px; line-height: 28px; background: grey; color: #fff; margin: 0px 1px; font-size: 18px; text-align: center; text-decoration: none; } .nav ul li a:hover { width: 100px; height: 26px; line-height: 28px; border: 1px solid red; color: red; background: #fff; } .content { position: absolute; top: 40px; bottom: 0px; right: 10px; left: 15px; background: rgb(176, 207, 180) } </style>
说明:
1、
methods: { clickHome() { this.$router.push("/index/home"); }, clickNav1() { this.$router.push("nav1"); } }
点击对应“首页”菜单,“导航1”时分别触发调用这里定义了两个方法clickHome()和clickNav1(),两个方法的实现都是调用this.$router.push(),
航到不同的 UR(跳转到不同的页面)。另外,push这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,可以回到之前的页面
需要注意的是,这里给push方法提供的代表路径的字符串。如果该字符串不以“/”打头,则表示相对路径,相对于父级路由的path。如果该字符串以“/”打头,则表示绝对路径的,相对于根路径“/”
例中,触发clickNav1()调用时,提供的路径字符串为“nav1”,为相对路径,父级路由路径为/index,所以点击后跳转的url路径为/index/nav1。
例中,触发clickHome()调用时,提供的路径字符串为“/index/home”,为绝对路径,所以点击后跳转的url路径为/index/home。
2、
<div class="content"> <router-view></router-view> </div>
这里通过在父页面,即index.vue组件中添加<router-view></router-view>
实现动态加载不同组件页面。点击导航菜单时,会自动加载对应的组件,然后替换<router-view>元素为对应的组件内容。
参考链接:
https://router.vuejs.org/zh/guide/essentials/navigation.html
https://router.vuejs.org/zh/guide/essentials/nested-routes.html
修改router/index.js
import Vue from "vue" import Router from "vue-router" import index from "@/views/index" import home from "@/views/home" import nav1 from "@/views/nav1" Vue.use(Router) export default new Router({ mode: "history", routes: [ { path: "/index", name: "index", component: index, children: [ { path: "/index/home", name: "home", component: home }, { path: "nav1", name: "nav1", component: nav1 } ] } ] })
说明:
1、vue路由通过children实现路由嵌套。个人理解,嵌套路由控制内容子组件内容的展示区:实现父组件的内容展示区保持不变,子组件内容展示区动态变化。
2、同this.$router.push(path),
这里的path也分相对路径(相对于父级路由的path路径),和绝对路径(相对于“/”)。如上,/index/home为绝对路径,nav1为相对路径(其绝对路径为/index/nav1)。注意,这里path是否为绝对路径,不影响是否嵌套路由,是否嵌套路由,是通过children决定的,只是影响路由匹配。如上,如果path: "nav1",写成path: "/nav1",,那么执行this.$router.push("nav1")时,跳转的url为/index/nav1,将找不到匹配的路由
3、this.$router.push(path) 和这里routes的关系:
个人理解,执行this.$router.push(path)后,程序自动获取需要跳转的绝对url,暂且称之为toPath,然后在routes中进行匹配,如果匹配到则加载对应的组件。
总结
通过router-view实现在当前指定容器中动态加载不同组件,展示不同页面的大致实现思路:
1、 在当前页面(这里称之为父页面).vue文件template模板中的指定位置(“包含”子组件内容的容器),添加<router-view></router-view>元素
2、 router/index.js中给父页面路径所在的路由,添加子路由:子组件的加载url对应的路由
以上所述是小编给大家介绍的Vue 嵌套路由使用总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】
- 陈思安.1990-国语钢琴酒吧5CD【欣代唱片】【WAV+CUE】
- 莫文蔚《莫后年代20周年世纪典藏》3CD[WAV+CUE][2G]
- 张惠妹《我要快乐》华纳[WAV+CUE][1G]
- 罗大佑1982《之乎者也》无法盗版的青春套装版 [WAV+CUE][1G]
- 曾庆瑜1989-款款柔情[日本东芝版][WAV+CUE]
- Scelsi-IntegraledesquatuorsacordesetTrioacordes-QuatuorMolinari(2024)[24bit-WAV]
- 房东的猫2017-房东的猫[科文音像][WAV+CUE]
- 杨乃文.2016-离心力(引进版)【亚神音乐】【WAV+CUE】
- 群星.2024-珠帘玉幕影视原声带【TME】【FLAC分轨】
- 芝麻龙眼.2008-光阴隧道民歌记录3CD【乡城】【WAV+CUE】
- 谭艳《再度重相逢HQII》头版限量[低速原抓WAV+CUE][549M]
- ABC唱片《蔡琴三十周年纪念版》6N纯银镀膜 [WAV+CUE][1.1G]