Vue Router实现新窗口打开的三种方法

 更新时间:2026年03月06日 09:45:10   作者:爱写程序的小高  
在Vue开发中,经常需要实现新窗口打开路由页面的需求,本文将系统介绍Vue Router中实现新窗口打开的三种主要方法,包括router-link组件方式、编程式导航方式和原生window.open方式,需要的朋友可以参考下

在Vue开发中,经常需要实现新窗口打开路由页面的需求。本文将系统介绍Vue Router中实现新窗口打开的三种主要方法,包括router-link组件方式、编程式导航方式和原生window.open方式。

一、router-link组件方式

最简单的方式是使用router-link组件的target="_blank"属性:

<template>
  <router-link 
    to="/new-page" 
    target="_blank"
    rel="noopener noreferrer"
  >
    打开新窗口
  </router-link>
</template>

特点

  • 简单直接
  • 适合静态链接
  • 需要添加rel="noopener noreferrer"防止安全漏洞

二、编程式导航方式

通过$router.resolve配合window.open实现:

<template>
  <button @click="openNewWindow">编程式导航打开</button>
</template>

<script>
export default {
  methods: {
    openNewWindow() {
      const route = this.$router.resolve({
        path: '/new-page',
        query: { id: 123 }
      });
      window.open(route.href, '_blank', 'noopener,noreferrer');
    }
  }
}
</script>

特点

  • 最推荐的方式
  • 保持路由配置一致性
  • 支持动态参数传递

三、原生window.open方式

直接拼接完整URL实现:

<template>
  <button @click="nativeOpenNewWindow">原生方式打开</button>
</template>

<script>
export default {
  methods: {
    nativeOpenNewWindow() {
      window.open(
        `${window.location.origin}/new-page?id=123`,
        '_blank',
        'noopener,noreferrer'
      );
    }
  }
}
</script>

特点

  • 简单直接
  • 适用于简单场景
  • 需要手动处理URL拼接

路由配置示例

import Vue from 'vue'
import Router from 'vue-router'
import NewPage from '../views/NewPage.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/new-page',
      name: 'NewPage',
      component: NewPage
    }
  ]
})

参数传递对比

方法参数传递方式适用场景
router-link通过:to绑定对象静态链接
编程式导航通过query对象动态参数
原生window.openURL拼接简单场景

到此这篇关于Vue Router实现新窗口打开的三种方法的文章就介绍到这了,更多相关Vue Router新窗口打开内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue 401配合Vuex防止多次弹框的案例

    Vue 401配合Vuex防止多次弹框的案例

    这篇文章主要介绍了Vue 401配合Vuex防止多次弹框的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue3如何自定义message弹窗

    vue3如何自定义message弹窗

    这篇文章主要介绍了vue3如何自定义message弹窗问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Vue使用swiper问题(5.2.0版本,避免踩坑)

    Vue使用swiper问题(5.2.0版本,避免踩坑)

    这篇文章主要介绍了Vue使用swiper问题(5.2.0版本,避免踩坑),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • uniapp实现webview页面关闭功能的代码示例

    uniapp实现webview页面关闭功能的代码示例

    uniapp用web-view打开一个网页,网页中点击跳转到下一层级的网页,一层层深入,点击返回键或者页面上方返回按钮只能一层层往回退,下面这篇文章主要给大家介绍了关于uniapp实现webview页面关闭功能的相关资料,需要的朋友可以参考下
    2024-03-03
  • vue中定义全局声明vscode插件提示找不到问题解决

    vue中定义全局声明vscode插件提示找不到问题解决

    这篇文章主要为大家介绍了vue中定义全局声明vscode插件提示找不到问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • vue3 获取元素高度不准的问题

    vue3 获取元素高度不准的问题

    这篇文章主要介绍了vue3 获取元素高度不准的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue+高德地图实现地图搜索及点击定位操作

    vue+高德地图实现地图搜索及点击定位操作

    这篇文章主要介绍了vue+高德地图实现地图搜索及点击定位操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 在Vue methods中调用filters里的过滤器实例

    在Vue methods中调用filters里的过滤器实例

    今天小编就为大家分享一篇在Vue methods中调用filters里的过滤器实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue3.0关闭eslint校验的3种方法详解

    vue3.0关闭eslint校验的3种方法详解

    这篇文章主要给大家介绍了关于vue3.0关闭eslint校验的3种方法,在实际开发过程中,eslint的作用不可估量,文中将关闭的方法介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Vue数据表格增删改查与表单验证代码详解

    Vue数据表格增删改查与表单验证代码详解

    这篇文章主要给大家介绍了关于Vue数据表格增删改查与表单验证的相关资料,Vue可以通过使用组件化的方式来实现表格的增删改查功能,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10

最新评论