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

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 会确保这些值是响应式的,即当路由变化时,模板会自动更新。

相关文章:

  • 自动化KVM虚拟机创建脚本详解:从模板到高效部署的线上实践!
  • 从信息孤岛到智能星云:学习助手编织高校学习生活的全维度互联网络
  • PHP:Web 开发领域的常青树
  • 全时智能客服+精准触达转化:云徙科技打造汽车营销新体验
  • 引入 Kafka 消息队列解耦热点操作
  • 魔方在线工具箱 —— 开启便捷高效的在线工具之旅
  • [7-01-03].第03节:环境搭建 - 集群架构
  • 堆排序详解:从理论到实践
  • ArcPy 与 ArcGIS .NET SDK 读取 GDB 要素类坐标系失败?GDAL 外挂方案详解
  • CoLMDriver:基于LLM的协同自动驾驶
  • 欧美简洁时尚风格通用PPT模版分享
  • 晶振的多面舞台:从日常电子到高精尖科技的应用探秘
  • PIN to PIN兼容设计:MT8370与MT8390核心板开发对比与优化建议
  • 机器学习--分类
  • 微信小程序中跨页面调用函数来刷新页面
  • 三步走实现嵌入式硬件与软件开发
  • 物联网嵌入式硬件开发管理指南(超详细版):基于三种外包方式的三阶段策略
  • [Godot] C#读取CSV表格创建双层字典实现本地化
  • C++面试(10)---合并两个排序的链表
  • 【C#】针对System.Drawing.Bitmap的压缩
  • 做海报可以在哪些网站下载素材/阿里巴巴logo
  • 哪些品牌网站做的好/百度搜索引擎广告投放
  • ps做图 游戏下载网站有哪些/营销到底是干嘛的
  • 三合一网站建设是指/百度秒收录技术最新
  • access 网站数据库/google海外推广
  • 政府网站建设运营情况汇报/一个具体网站的seo优化