Nuxt3学习之旅(三、路由)

1,966 阅读1分钟

在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”路由时只展示父组件中的内容。