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

vue二级路由的写法,以及动态路由的匹配和获取动态参数的值

在 Vue Router 中,可以通过嵌套路由来实现二级页面。嵌套路由允许在父路由组件中嵌套子路由组件

<div id="app"><div class="navbar"><ul class="nav-navbar"><li><router-link to="/home">home</router-link></li><li><router-link to="/list">list</router-link></li></ul></div><div class="contianer">//<router-view>用于显示子路由的内容<router-view></router-view></div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
//加载Vue的路由
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.4.2/vue-router.js"></script><script>//定义Home组件let Home={template:'<h3>这是首页</h3>'};//定义List组件let List={template:`<div><h3>清单页面</h3><ul><li><router-link to="/list/item1">Item 1</router-link></li>  //定义二级路由<li><router-link to="/list/item2">Item 2</router-link></li>    </ul><router-view></router-view>   //显示二级路由的内容</div>`};//定义二级路由的组件let Item1={template:'<h4>item 1 page</h4>'};let Item2={template:'<h4>item 2 page</h4>'};//定义路由的路径和注册组件const routes=[{path:'/home',component:Home},{path:'/list',component:List,//children属性表示子路由children:[{path:'item1',component:Item1},{path:'item2',component:Item2}]}];//创建路由实例并传递routes选项const router=new VueRouter({routes:routes});//创建和挂载根实例const app=new Vue({router}).$mount('#app');</script>

详细说明

  1. 定义子路由

在 List 组件中,定义了一个嵌套的 router-view,用于显示子路由的内容。
在路由配置中,/list 路由的 children 属性中定义了子路由 item1 和 item2。

  1. 子路由的路径

子路由的路径是相对于父路由的。例如,/list/item1 和 /list/item2 是完整的路径,但在子路由中,它们被定义为 item1 和 item2。

  1. 导航链接

在 List 组件中,使用 创建了指向子路由的链接。

  1. 运行效果

当点击 List 链接时,会导航到 /list,显示 List 页面。
在 List 页面中,有两个链接分别指向 /list/item1 和 /list/item2。
点击这些链接时, 会显示对应的子路由组件内容。

在 Vue Router 中,你可以使用动态路由匹配来捕获 URL 中的参数。例如,/list/:page 和 /list/*page
是两种不同的路由匹配模式:

  • /list/:page::page 是一个动态段,可以匹配任何值。 /list/*page:*page 是一个通配符,可以匹配任意路径。

在组件中,你可以通过 this. r o u t e . p a r a m s 来访问动态段的值,通过 t h i s . route.params 来访问动态段的值,通过 this. route.params来访问动态段的值,通过this.route.path 来访问完整的路径。

示例代码

<div id="app"><div class="navbar"><ul class="nav-navbar"><li><router-link to="/home">home</router-link></li><li><router-link to="/list/item1">list/item1</router-link></li>  //这里可不是二级页面或子页面,item1是动态参数<li><router-link to="/list/item2">list/item2</router-link></li>  //这里可不是二级页面或子页面,item2是动态参数<li><router-link to="/list/other/path">list/other/path</router-link></li></ul></div><div class="container"><router-view></router-view></div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.4.2/vue-router.js"></script>
<script>//定义组件let Home={template:'<h3>这是首页</h3>'};let List={template:`<div><h3>这是清单页</h3><p>动态页面:<strong>{{page}}</strong></p>  <p>全路径:<strong>{{fullPath}}</strong></p></div>`,computed:{//这里是计算page属性,上面的模板获取{{page}}就是这里面的值page(){return this.$route.params.page;},fullPath(){return this.$route.path}}    }//设置路由,/:page表示动态段可以匹配任何值,/*page表示通配符,可以是任何路径const routes=[{path:'/home',component:Home},{path:"/list/:page",component:List},{path:"/list/*page",component:List}];const router=new VueRouter({routes:routes});const vm=new Vue({router}).$mount("#app");
</script>

详细说明

  1. 定义动态路由

/list/:page::page 是一个动态段,可以匹配任何值。
/list/*page:*page 是一个通配符,可以匹配任意路径。
在组件中获取动态参数
使用 this. r o u t e . p a r a m s . p a g e 获取动态段的值。使用 t h i s . route.params.page 获取动态段的值。 使用 this. route.params.page获取动态段的值。使用this.route.path 获取完整的路径。

  1. 导航链接

在导航栏中,使用 创建了指向动态路由的链接。
运行效果
当你点击 list/item1 链接时,会导航到 /list/item1,List 组件会显示 page 的值为 item1,fullPath 的值为 /list/item1。
当你点击 list/other/path 链接时,会导航到 /list/other/path,List 组件会显示 page 的值为 other/path,fullPath 的值为 /list/other/path。

  1. 注意事项

动态段和通配符的区别
动态段(如 :page)只能匹配单个路径段。
通配符(如 *page)可以匹配任意路径,包括多个路径段。

路由冲突
如果同时定义了 /list/:page 和 /list/*page,Vue Router 会根据定义的顺序匹配路由。因此,建议避免同时使用这两种模式,以免产生冲突。

{{ page }} 和 {{ fullPath }} 是模板语法,用于绑定数据到模板中。这些数据可以来自组件的 data、props、computed 或 methods

  1. page 计算属性

page 是一个计算属性,它的值依赖于 this. r o u t e . p a r a m s . p a g e 。每当 t h i s . route.params.page。 每当 this. route.params.page。每当this.route.params.page 发生变化时,page 会自动重新计算。

  1. fullPath 计算属性

fullPath 是一个计算属性,它的值依赖于 this. r o u t e . p a t h 。每当 t h i s . route.path。 每当 this. route.path。每当this.route.path 发生变化时,fullPath 会自动重新计算。

  1. 模板绑定

在模板中,{{ page }} 和 {{ fullPath }} 会自动绑定到对应的计算属性。
Vue 会确保这些值是响应式的,即当路由变化时,模板会自动更新。

http://www.xdnf.cn/news/13936.html

相关文章:

  • FreeSWITCH mod_curl 和 mod_xml_rpc 测试
  • JVM 内存、JMM内存与集群机器节点内存的联系
  • 【redis——缓存穿透】
  • 基于PSO粒子群优化的VMD-LSTM时间序列预测算法matlab仿真
  • git 下载安装并连接gitee
  • 一键给你的网页增加 ios26 液态玻璃效果
  • Android 手机如何实现本地视频音频提取?实战教程来了
  • 提示词Prompts(2)
  • 提示词Prompts(1)
  • iOS-SM3加密算法N种集成
  • MySql基础教程:事务基础知识
  • 通信安全员A,B,C证有什么区别?
  • 一文讲清网络变压器、芯片和 RJ45 之间的接线
  • WebView工作原理全解析:如何实现混合开发的无缝衔接
  • python transformers库笔记(BertTokenizerFast类)
  • 高频面试之12 HBase
  • javascript中浏览器自带的实用方法
  • 液氮罐里的重要样本老是担心安全受到损坏如何操作可以在线记录开门时间呢?
  • 使用GpuGeek训练图像分类器:从入门到精通
  • ubuntu24.04.2安装docker自动化脚本
  • React Native 性能优化实践
  • 【Linux网络编程】基于udp套接字实现的网络通信
  • 2024年06月青少年软件编程(图形化)等级考试试卷(四级)
  • 一名高级运维工程师,一台新服务器,安装windows系统后,在网络攻防(护网行动)形式下,应该怎么做安全加固?
  • Arduino入门教程:​​​​​​​2、代码基础
  • 在 cuda 基础环境中安装完整的cupy
  • Spring AI Chat Memory 指南
  • Prompt从入门到抄作业
  • 联邦算法分析:技术深度探索与实践应用
  • Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞