vue3(十七)-基础入门之vue-nuxt路由

一、路由

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

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

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

1、基础路由

  • 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'}]
}
<!--pages/index.vue -->
<template><div><h1>Page index</h1><nuxt-child /></div>
</template><!-- pages/user/index.vue -->
<template><div><h1>Users index</h1></div>
</template><!-- pages/user/one.vue -->
<template><div><h1>User one</h1></div>
</template>

测试结果:

  • http://localhost:3000/

在这里插入图片描述

  • http://localhost:3000/user
    在这里插入图片描述

  • http://localhost:3000/user/one
    在这里插入图片描述

2、动态路由

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

pages 目录结构:

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'}]
}
<!--pages/index.vue -->
<template><div><h1>Page index</h1><nuxt-child /></div>
</template><!-- pages/users/_id.vue -->
<template><div><h1>Users index</h1></div>
</template><!-- pages/_slug/index.vue -->
<template><div><h1>_slug index</h1></div>
</template><!-- pages/_slug/index.vue -->
<template><div><h1>_slug comments</h1></div>
</template>

名称为 users-id 的路由路径带有 :id? 参数,表示该路由是可选的。如果想将它设置为必选的路由,需要在 users/_id 目录内创建一个 index.vue 文件。

测试结果:

http://localhost:3000
在这里插入图片描述
http://localhost:3000/users/

在这里插入图片描述

http://localhost:3000/123/

在这里插入图片描述

http://localhost:3000/123/comments

在这里插入图片描述

3、路由参数校验

可以在动态路由组件中定义参数校验方法

例如:在 pages/users/_id.vue 文件中定义 validate 方法

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

如果校验方法返回的值不为 true或Promise中 resolve 解析为false或抛出 Error , Nuxt.js 将自动加载显示 404 错误页面或 500 错误页面。

4、嵌套路由

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

注意:别忘了在父组件(.vue文件) 内增加 用于显示子视图内容。

  • pages 目录结构
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'}]}]
}
<!-- pages/users.vue -->
<template><div><h1>Users Page</h1><nuxt-child /></div>
</template><!-- pages/users/_id.vue -->
<template><div><h1>User _id</h1></div>
</template><!-- pages/users/index.vue -->
<template><div><h1>Users index</h1></div>
</template>

测试结果:

  • http://localhost:3000/users

在这里插入图片描述

  • http://localhost:3000/users/123

在这里插入图片描述

二、声明式导航

pages 目录结构:

pages/
--| users/
-----| _id.vue
-----| index.vue
--| index.vue
<template><div><nav><!-- 使用<nuxt-link>实现页面导航 --><nuxt-link to="/">pages</nuxt-link><nuxt-link to="/users/123">Users _id</nuxt-link><nuxt-link to="/users">Users</nuxt-link></nav><!-- nuxt2中必须添加<Nuxt />标签,否则 pages 中的页面不显示--><Nuxt /></div>
</template>

三、重定向

方式一、配置 nuxt.config.js 实现

需要先清除 nuxt 默认生成的路由,否则会与配置的路由冲突。

router: {extendRoutes (routes, resolve) {// 首先清除默认的根路由const routesToRemove = ['/', '/users']routesToRemove.forEach(path => {const index = routes.findIndex(route => route.path === path)if (index > -1) {routes.splice(index, 1)}})// 添加新的重定向规则routes.push({path: '/',redirect: '/users/test'})routes.push({path: '/users',redirect: { name: 'about' }})// 打印所有路由,用于调试console.log('所有路由配置:',routes.map(route => ({path: route.path,redirect: route.redirect})))}}

方式二、中间件来实现

middleware/redirect.js

其中函数的参数为可选

export default function ({isHMR,app,store,params,error,redirect,route
}) {if (isHMR) {return}// 重定向规则const redirectRules = {'/': '/users/test', // 将根路径重定向到 /users/test'/users': '/about' // 将 /users 重定向到 /about}// 检查当前路径是否需要重定向if (redirectRules[route.path]) {return redirect(redirectRules[route.path])}
}

nuxt.config.js

export default {router: {middleware: ['redirect']}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479243.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式-中介者模式

动机(Motivation) 多个对象相互关联的情况&#xff0c;对象之间常常会维持一种复杂的引用关系&#xff0c;如果遇到一些需求的更改&#xff0c;这种直接的引用关系将面临不断的变化。在这种情况下&#xff0c;可以使用一种”中介对象“来管理对象间的关联关系&#xff0c;避免…

IntelliJ+SpringBoot项目实战(十四)--在SpringBoot中整合SpringSecurity和JWT(上)

SpringSecurity是大名鼎鼎的认证授权框架&#xff0c;在SSH时代就已经大放异彩。在JAVA项目中&#xff0c;权限框架的解决方案主要是以SpringSecurity和Shiro为主。JWT是目前主流的基于access-token的的认证框架&#xff0c;在项目中一般时SpringSecurity和JWT结合使用&#xf…

【AI系统】Tensor Core 架构演进

自 Volta 架构时代起&#xff0c;英伟达的 GPU 架构已经明显地转向深度学习领域的优化和创新。2017 年&#xff0c;Volta 架构横空出世&#xff0c;其中引入的张量核心&#xff08;Tensor Core&#xff09;设计可谓划时代之作&#xff0c;这一设计专门针对深度学习计算进行了优…

问题记录-Java后端

问题记录 目录 问题记录1.多数据源使用事务注意事项&#xff1f;2.mybatis执行MySQL的存储过程&#xff1f;3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项&#xff1f; 问题&#xff1a;在springBoot项目中多表处理数…

java:aqs实现自定义锁

aqs采用模板方式设计模式&#xff0c;需要重写方法 package com.company.aqs;import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSynchronizer; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock;…

day11_JS初识_语法

day11_JS初识_语法 今日学习目标 : 入门HarmonyOS生态中 , ArkTS最基础的语法 JavaScript , 今天最主要的学习内容了解和掌握JavaScript的基础语法 , 并灵活的再后面开发过程进行使用 今日学习目标 什么是JavaScript JavaScript组成 JavaScript执行环境 JavaScript代码的书…

[C++]:IO流

1. IO 流 1.1 流的概念 在C中&#xff0c;存在一种被称为“流”的概念&#xff0c;它描述的是信息流动的过程&#xff0c;具体来说就是信息从外部输入设备&#xff08;比如常见的键盘&#xff09;传输到计算机内部&#xff08;像内存区域&#xff09;&#xff0c;以及信息从内…

基于Kubernetes编排部署EFK日志收集系统

基于K8S编排部署EFK日志收集系统 案例分析 1. 规划节点 节点规划&#xff0c;见表1。 表1 节点规划 IP主机名k8s版本信息192.168.100.3masterv1.25.2192.168.100.4nodev1.25.2 2. 基础准备 Kubernete环境已安装完成&#xff0c;将提供的软件包efk-img.tar.gz上传至master…

Kubernetes 还是 SpringCloud?

前些年&#xff0c;随着微服务的概念提出以及落地&#xff0c;不断有很多的公司都加入到了这场技术革新中&#xff0c;现在可谓是人人都在做和说微服务。 提到微服务&#xff0c;Java栈内&#xff0c;就不得不提SpringBoot、SpringCloud、Dubbo。 近几年&#xff0c;随着Cloud …

ChatGPT如何辅助academic writing?

今天想和大家分享一篇来自《Nature》杂志的文章《Three ways ChatGPT helps me in my academic writing》&#xff0c;如果您的日常涉及到学术论文的写作&#xff08;writing&#xff09;、编辑&#xff08;editing&#xff09;或者审稿&#xff08; peer review&#xff09;&a…

101.【C语言】数据结构之二叉树的堆实现(顺序结构) 2

目录 1.堆删除函数HeapPop 一个常见的错误想法:挪动删除 正确方法 设计堆顶删除函数HeapPop 解析向下调整函数AdjustDown 核心思想 向下调整最多次数 向下调整的前提 代码实现 提问 细节分析 2.测试堆删除函数 运行结果 3.引申问题 运行结果 4.练习 分析 代码…

【机器学习chp8】统计学习理论

前言 本文遗留问题&#xff1a;无 目录 前言 一、结构风险最小化 1、最小化风险决策 2、分类与回归中的最小化风险决策 3、统计学习的基本目标 4、无免费午餐定理 5、Hoeffding不等式 &#xff08;1&#xff09;背景及定义 &#xff08;2&#xff09;Hoeffding不等式…

Springboot启动报错’javax.management.MBeanServer’ that could not be found.

报错信息如下图&#xff1a; 解决办法&#xff1a; 1.在你的.yml文件或者.properties文件里加上如下配置&#xff1a; properties: management.endpoints.jmx.enabledfalseyml: management:endpoints:jmx:enabled: false2.如果以上方法行不通&#xff0c;在springboot启动类…

英语知识网站:Spring Boot技术构建

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

英伟达推出了全新的小型语言模型家族——Hymba 1.5B

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

spring boot2.7集成OpenFeign 3.1.7

1.Feign Feign是一个声明式web服务客户端。它使编写web服务客户端更容易。要使用Feign&#xff0c;请创建一个接口并对其进行注释。它具有可插入注释支持&#xff0c;包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持&…

Jmeter中的前置处理器

5&#xff09;前置处理器 1--JSR223 PreProcessor 功能特点 自定义数据处理&#xff1a;使用脚本语言处理请求数据&#xff0c;实现高度定制化的数据处理和生成。动态数据生成&#xff1a;在请求发送前生成动态数据&#xff0c;如随机数、时间戳等。变量设置&#xff1a;设置…

git(Linux)

1.git 三板斧 基本准备工作&#xff1a; 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候&#xff0c;只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加&#xff1f; 1.1 git add test.c 也不算完全添加到仓库里面&…

学习Java的日子 Day56 数据库连接池,Druid连接池

Day56 1.数据库连接池 理解&#xff1a;池就是容器&#xff0c;容器中存放了多个连接对象 使用原因&#xff1a; 1.优化创建和销毁连接的时间&#xff08;在项目启动时创建连接池&#xff0c;项目销毁时关闭连接池&#xff09; 2.提高连接对象的复用率 3.有效控制项目中连接的…

Jmeter测试工具的安装和使用,mac版本,jmeter版本5.2.1

Jmeter测试工具的安装和使用JSON格式请求 一、安装1、安装jdk包和设置java环境2、去官网下载Jmeter3、解压后&#xff0c;打开mac终端&#xff0c;进入apache-jmeter的bin文件开启jmeter 二、使用jmeter1、添加线程2、添加HTTP请求3、配置请求的协议、IP地址、端口号、请求方法…