title: 使用 navigateTo 实现灵活的路由导航

date: 2024/8/13

updated: 2024/8/13

author: cmdragon

excerpt:

摘要:本文详细介绍 Nuxt.js 中的 navigateTo 函数,包括基本用法、在路由中间件中使用、导航到外部 URL 和新标签页打开链接的方法,以及参数详解和注意事项,展示了该函数在程序化导航中的灵活性和强大功能。

categories:

  • 前端开发

tags:

  • Nuxtjs
  • 路由
  • 导航
  • 编程
  • Web
  • 中间件
  • URL



扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长

使用 navigateTo 函数的详细指南

navigateTo 是 Nuxt.js 中一个非常强大的导航辅助函数,允许开发者以编程的方式导航用户,支持服务端与客户端的环境。

什么是 navigateTo

navigateTo 允许我们在自己的代码中灵活地重定向到不同的路由。它可以以字符串或者路由对象的形式接收目标路径,并支持多种选项来定制导航行为。

基本用法

在 Vue 组件中使用 navigateTo 非常简单。以下是一些常见用法的示例:

导航到简单路径


<script setup lang="ts"> // 导航到 '/search'
await navigateTo('/search')
</script>

导航到路由对象

你也可以将路由对象作为参数传递:


<script setup lang="ts"> // 使用路由对象导航
await navigateTo({path: '/search'})
</script>

带查询参数的路由对象

如果需要添加查询参数,可以这样做:


<script setup lang="ts"> // 导航到带有查询参数的路径
await navigateTo({
path: '/search',
query: {
page: 1,
sort: 'asc'
}
})
</script>

在路由中间件中使用

navigateTo 还可以在路由中间件中使用来实现重定向:

// middleware/redirect.js
export default defineNuxtRouteMiddleware((to, from) => {
if (to.path !== '/search') {
// 永久重定向到 '/search'
return navigateTo('/search', {redirectCode: 301})
}
})

导航到外部 URL

默认情况下,navigateTo 不允许导航到外部 URL。如果需要,可以设置 external 参数为 true


<script setup lang="ts"> // 导航到外部URL
await navigateTo('https://nuxt.com', {external: true})
</script>

在新标签页中打开链接

如果想在新标签页中打开链接,可以使用 open 选项:


<script setup lang="ts"> // 在新标签页中打开链接
await navigateTo('https://nuxt.com', {
open: {
target: '_blank',
windowFeatures: {
width: 500,
height: 500
}
}
})
</script>

参数详解

  • to:

    • 类型: RouteLocationRaw | undefined | null
    • 默认值: '/'
    • 解释: 这是目标路由,可以是字符串或路由对象。当其值为 undefinednull 时,默认导航到根路由 '/'

可选参数 (options)

  • replace:

    • 类型: boolean
    • 默认值: false
    • 解释: 如果设置为 true,则会用新路由替换当前路由,而不是将其推入历史记录。
  • redirectCode:

    • 类型: number
    • 默认值: 302
    • 解释: 在服务器端重定向时,使用的状态码。可以使用 301 表示永久重定向。
  • external:

    • 类型: boolean
    • 默认值: false
    • 解释: 如果设置为 true,则可以导航到外部 URL。默认为不允许外部链接。
  • open:

    • 类型: OpenOptions
    • 解释: 用于在客户端上通过 window.open() 方法导航到 URL。服务器端将忽略该选项。

    OpenOptions 的属性:

    • target:

      • 类型: string
      • 默认值: '_blank'
      • 解释: 定义加载资源的上下文名称。
    • windowFeatures:

      • 类型: OpenWindowFeatures
      • 解释: 这组属性控制新窗口的一些特性,如尺寸和位置。

      OpenWindowFeatures 的属性:

      • popup: boolean
      • width / innerWidth: number
      • height / innerHeight: number
      • left / screenX: number
      • top / screenY: number
      • noopener: boolean
      • noreferrer: boolean

示例:使用全部选项

下面是一个复杂的示例,展示如何使用所有选项进行导航:


<script setup lang="ts"> // 复杂的导航示例
await navigateTo('https://example.com', {
external: true,
open: {
target: '_blank',
windowFeatures: {
width: 800,
height: 600,
popup: true
}
}
})
</script>

注意事项

  • 在调用 navigateTo 时,请确保使用 awaitreturn 处理其结果,因为它返回一个 Promise。
  • 使用中间件时请注意重定向代码的选择,根据信息的更新状态选择合适的状态码。

总结

navigateTo 是一个非常强大的工具,能够以灵活和高效的方式进行导航。无论是简单的路由跳转还是复杂的外部 URL

打开,navigateTo 都可以轻松实现

余下文章内容请点击跳转至 个人博客页面 或者 扫码关注或者微信搜一搜:编程智域 前端至全栈交流与成长,阅读完整的文章:使用 navigateTo 实现灵活的路由导航 | cmdragon's Blog

往期文章归档:

使用 navigateTo 实现灵活的路由导航的更多相关文章

  1. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装

    1.写在前面 最近在学习Vue2,遇到有些页面请求数据需要用户登录权限.服务器响应不符预期的问题,但是总不能每个页面都做单独处理吧,于是想到axios提供了拦截器这个好东西,再于是就出现了本文. 2. ...

  2. Vue的钩子函数[路由导航守卫、keep-alive、生命周期钩子]

    前言 说到Vue的钩子函数,可能很多人只停留在一些很简单常用的钩子(created,mounted),而且对于里面的区别,什么时候该用什么钩子,并没有仔细的去研究过,且Vue的生命周期在面试中也算是比 ...

  3. vue_VueRouter 路由_路由器管理n个路由_并向路由组件传递数据_新标签路由_编程式路由导航

    路由:就是一个 key 与 value 的映射关系.key 就是 pathh 前台路由的 value 是 Component 组件对象 后台路由的 value 是一个 回调函数 普通链接: 会发送请求 ...

  4. Vue-初步了解vue-router的三要素:路由map 、路由视图、路由导航

    安装vue-router模块 使用vue-router前要先安装vue-router库 cnpm install vue-router –save 使用vue-router vue-router有三个 ...

  5. vue.js编程式路由导航 --- 由浅入深

    编程式路由导航 实例中定义一个方法,这个方法绑定在标签上 然后就设置路由跳转 语法 this.$router.history.push('要跳转路由的地址') <!DOCTYPE html> ...

  6. vue之路由导航守卫-全局前置守卫

    一.使用方式 全局前置守卫用于在路由配置生效之前进行一些动作,可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... ...

  7. 【VUE】5.路由导航守卫

    1. 功能需求 1. 当用户登陆成功后,把得到的token存到Session Storage 2. components -> Form.vue , 对预验证进行校验,如果验证不正确就跳出,如果 ...

  8. Vue Router路由导航及传参方式

    路由导航及传参方式 一.两种导航方式 ①:声明式导航 <router-link :to="..."> ②:编程式导航 router.push(...) 二.编程式导航参 ...

  9. 在React中使用 react-router-dom 编程式路由导航的正确姿势【含V5.x、V6.x】

    ## react-router-dom 编程式路由导航 (v5) ###### 1.push跳转+携带params参数 ```jsx props.history.push(`/b/child1/${i ...

  10. vue - 解决页面跳转到外部链接后,ios回退到本页面,生命周期,路由导航守卫钩子都无法触发的问题

    虽然加班,最近心情还是可以的,没多少bug找上门. 乐级生悲,遇到了个奇葩的坑,花了点时间百度才解决...但我离不开的'板砖'是安卓的,对此坑是抗拒的,完全没问题... #此坑描述 ...订单详情某按 ...

随机推荐

  1. MySQL Explain 关键字详解

    概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain + sql explain select * from t1 执行计划各 ...

  2. InvalidOperationException Cannot modify ServiceCollection after application is built .Net6 异常

    背景 我用了一个叫Unchase.Swashbuckle.AspNetCore.Extensions的库来加强Swagger的文档,我一般写法是这样的: builder.Services.AddSwa ...

  3. Linux下Oracle11G数据备份恢复(RMAN)

    数据库安装参考步骤1--14 https://www.cnblogs.com/baixisuozai/p/17852235.html #rman数据库备份脚本 #!/bin/bash PATH=$PA ...

  4. SDL3 入门(3):三角形

    SDL3 提供了 SDL_RenderGeometry 函数绘制几何图形,用法和 OpenGL 差不多,先定义顶点数据,然后根据顶点数据绘制几何图形. 绘制三角形的代码如下: std::array&l ...

  5. HDD成都站:HMS Core 6.0带来新可能,多元服务驱动产品价值提升

    9月10日,由华为开发者联盟主办的HDD(Huawei Developer Day)于成都举行.活动中,华为HMS Core各领域专家重点解读了HMS Core 6.0为开发者带来的多项全新能力,及生 ...

  6. 高通lk:配置与使用i2c

    高通lk:配置与使用i2c 以msm8909为例. 背景 在lk中要去驱动一个aw9523的ic来控制指示灯. 但是现在对应的i2c没有打开.因此需要进行处理. 步骤 找到I2C对应的ID与句柄 参考 ...

  7. 《DNK210使用指南 -CanMV版 V1.0》第一章 本书学习方法

    第一章 本书学习方法 1)实验平台:正点原子DNK210开发板 2)章节摘自[正点原子]DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com ...

  8. SpringCloud学习篇

    什么是SpringCloud Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Task,一个生 ...

  9. Mybatis 快速入门(注解方式)

    导读 注解开发的方式只需要程序员开发Mapper接口即可,不需要编写映射文件(XML). 环境搭建 项目结构 SqlMapConfig.xml <!DOCTYPE configuration P ...

  10. Android Spingboot 实现SSE通信案例

    SSE SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接 ...