在vue中,我们要安装vue-router插件来实现路由功能。而在nuxt中,你不需要安装任何插件,直接在根目录下的pages文件夹中创建vue文件即可,nuxt会自动帮我们生成路由配置。
在vue中,我们需要在根组件中使用组件进行占位,将来路由匹配到的内容会在这里渲染。而在nuxt中,我们使用的是或者。将根组件中的替换为就可以在首页看到index.vue中的内容了。
需要注意的是,在pages文件夹中必须存在一个名为index.vue的文件或者名为index的文件夹下的index.vue的文件作为首页,否则就会报错,无法生成路由。
而如果在pages中同时存在index文件和index文件夹,则优先展示index文件中的内容。
在vue中,我们通过组件进行路由导航,而在nuxt中,我们用的是。对于普通路由来说,用法是一样的。
<nuxt-link to="/detail">detail</nuxt-link>
动态路由
如果你需要在nuxt3里面定义带参数的动态路由,只需要创建对应的以“[]”包裹参数名的vue文件或目录即可。
传递参数:
<nuxt-link to="/list-华为/1">list-huawei/1</nuxt-link>
在页面中获取参数:
<template> <div> <h3>list detail</h3> <div>product:{{$route.params.product}}</div> <div>id:{{$route.params.id}}</div> </div></template>
嵌套路由
创建嵌套路由,你需要在对应的文件夹下创建vue文件,并创建一个和vue文件同名的文件夹,存放子视图内容。
并且在父组件(child.vue)中添加用来显示子视图。
<template> <div> <h2>Parent Child Page</h2> <nuxt-child></nuxt-child> </div></template>
<nuxt-link to="/parent/child">parent/child</nuxt-link> <br> <nuxt-link to="/parent/child/detail">parent/child/detail</nuxt-link>
如果在同名文件夹中没有index.vue文件,跳转“/parent/child”路由时只展示父组件中的内容。