路由页面 pages
pages 文件夹目录是可选的,也就是说你可以只通过app.vue 来完成你的项目, 但我们没有pages文件夹目录时,vue-router是不会被加载的,这样可以减小包的大小
当我们创建了pages文件夹目录后,Nuxt会自动集成vue-router,结合pages目录下的文件(夹)名来构建我们的项目
与组件不同的是,我们的页面必须有一个单一的根元素,以允许Nuxt在页面之间应用路由转换。
动态路由 - Dynamic Routes
如果把任何东西放在方括号[]中,它将被转换为一个dynamic router参数。您可以在一个文件名或目录中混合和匹配多个参数,甚至是非动态文本。
如果需要一个通配路由,可以使用一个名为[…slug].vue的文件来创建它。这将匹配该路径下的所有路由,因此它不支持任何非动态文本。
示例 :chestnut:
-| pages/---| index.vue---| users-[group]/-----| [id].vue
在上面的例子中,可以通过 $route 对象访问组件中的参数 group/id:
<template>{{ $route.params.group }}{{ $route.params.id }}</template>
当路由跳转到 /user-admins/123 时,将会渲染出
admins 123
导航 - Navigation
要在应用程序的页面之间导航,你应该使用<NuxtLink>组件。该组件包含在Nuxt中,因此您不必像导入其他组件那样导入它。它类似于HTML的<a>标签,除了使用<a href="/about />"你也可以使用<NuxtLink to="/about" />。如果你以前用过vue-router,你可以把<NuxtLink>看作是<RouterLink>的替换。
一个到索引的简单链接。Vue页面在您的页面文件夹:
<template><NuxtLink to="/">首页</NuxtLink></template>
<NuxtLink>组件应该用于所有内部链接。这意味着对于所有指向站点内页面的链接,您应该使用<NuxtLink>。<a>标签应该用于所有外部链接。这意味着,如果你有链接到其他网站,你应该使用<a>标签。
<template><div><h1>首页</h1><NuxtLink to="/about">About (Nuxt应用里的内部链接)</NuxtLink><a href="https://nuxtjs.org">其他应用里的链接</a></div></template>
如果你想了解更多关于
<RouterLink>的信息,请阅读Vue Router文档获取更多信息。
嵌套路由 - Nested Router
我们为<RouterView>组件提供了一个语义别名<NuxtChild>,用于显示嵌套路由的子组件。在Nuxt应用里我们用<NuxtChild>组件来替代vue-router里的<RouterView>
可以参考vue-router的嵌套路由
示例 :chestnut:
-| pages/---| parent/------| child.vue---| parent.vue
Nuxt将为我们生成下面的路由
[{path: '/parent',component: '~/pages/parent.vue',name: 'parent',children: [{path: 'child',component: '~/pages/parent/child.vue',name: 'parent-child'}]}]
展示child.vue组件时,你必须在pages/parent.vue中插入<NuxtChild>组件:
<template><div><h1>这里是 parent component</h1><NuxtChild /></div></template>
