zoukankan      html  css  js  c++  java
  • vue-ssr之nuxt.js的路由

    一个web项目是离不开路由系统的,那么我们接下来看看nuxt.js框架如果实现页面路由。

    Nuxt.js 依据 pages 目录结构自动生成 vue-router 模块的路由配置。

    要在页面之间使用路由,我们建议使用<nuxt-link> 标签。

    <template>
      <nuxt-link to="/">首页</nuxt-link>
    </template>
    

    基础路由

    假设 pages 的目录结构如下:

    pages/
    --| user/
    -----| index.vue
    -----| one.vue
    --| index.vue
    

    那么,Nuxt.js 自动生成的路由配置如下:

    router: {
      routes: [
        {
          name: 'index',
          path: '/',
          component: 'pages/index.vue'
        },
        {
          name: 'user',
          path: '/user',
          component: 'pages/user/index.vue'
        },
        {
          name: 'user-one',
          path: '/user/one',
          component: 'pages/user/one.vue'
        }
      ]
    }
    

    动态路由

    在 Nuxt.js 里面定义带参数的动态路由,需要创建对应的以下划线作为前缀的 Vue 文件 或 目录。

    以下目录结构:

    pages/
    --| _slug/
    -----| comments.vue
    -----| index.vue
    --| users/
    -----| _id.vue
    --| index.vue
    

    Nuxt.js 生成对应的路由配置表为:

    router: {
      routes: [
        {
          name: 'index',
          path: '/',
          component: 'pages/index.vue'
        },
        {
          name: 'users-id',
          path: '/users/:id?',
          component: 'pages/users/_id.vue'
        },
        {
          name: 'slug',
          path: '/:slug',
          component: 'pages/_slug/index.vue'
        },
        {
          name: 'slug-comments',
          path: '/:slug/comments',
          component: 'pages/_slug/comments.vue'
        }
      ]
    }
    

    PS. generate 命令会忽略动态路由

    路由参数校验

    Nuxt.js 可以让你在动态路由对应的页面组件中配置一个校验方法用于校验动态路由参数的有效性。

    export default {
      validate ({ params }) {
        // 必须是number类型
        return /^d+$/.test(params.id)
      }
    }
    

    如果校验方法返回的值不为truePromiseresolve 解析为false或抛出ErrorNuxt.js将自动加载显示 404 错误页面或 500 错误页面。

    嵌套路由

    你可以通过 vue-router 的子路由创建 Nuxt.js 应用的嵌套路由。

    创建内嵌子路由,你需要添加一个 Vue 文件,同时添加一个与该文件同名的目录用来存放子视图组件。

    PS. 别忘了在父组件(.vue文件) 内增加 <nuxt-child/> 用于显示子视图内容。

    假设文件结构如:

    pages/
    --| users/
    -----| _id.vue
    -----| index.vue
    --| users.vue
    

    Nuxt.js 自动生成的路由配置如下:

    router: {
      routes: [
        {
          path: '/users',
          component: 'pages/users.vue',
          children: [
            {
              path: '',
              component: 'pages/users/index.vue',
              name: 'users'
            },
            {
              path: ':id',
              component: 'pages/users/_id.vue',
              name: 'users-id'
            }
          ]
        }
      ]
    }
    

    路由扩展

    如果你希望扩展Nuxt.js创建的路由。您可以通过extendRoutes选项执行此操作。

    nuxt.config.js添加自定义路由:

    
    export default {
      router: {
        extendRoutes (routes, resolve) {
          routes.push({
            name: 'custom',
            path: '*',
            component: resolve(__dirname, 'pages/404.vue')
          })
        }
      }
    }
    

    本文参考

  • 相关阅读:
    常用命令
    linux是文件里的内容整齐
    centos 7新机使用前操作
    Symmetric Tree @leetcode
    Binary Tree Inorder Traversal @leetcode
    [转]快速排序
    Remove Duplicates from Sorted Array @leetcode
    Remove Element @leetcode
    随笔1
    Unique Binary Search Trees @leetcode
  • 原文地址:https://www.cnblogs.com/huyifei/p/10342484.html
Copyright © 2011-2022 走看看