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新窗口打开内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vuex中使用modules时遇到的坑及问题

    vuex中使用modules时遇到的坑及问题

    这篇文章主要介绍了vuex中使用modules时遇到的坑及问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue创建项目后没有webpack.config.js(vue.config.js)文件的解决

    Vue创建项目后没有webpack.config.js(vue.config.js)文件的解决

    这篇文章主要介绍了Vue创建项目后没有webpack.config.js(vue.config.js)文件的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue props 单向数据流的实现

    Vue props 单向数据流的实现

    这篇文章主要介绍了Vue props 单向数据流的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue实现组件跟随鼠标位置弹出效果(示例代码)

    vue实现组件跟随鼠标位置弹出效果(示例代码)

    这篇文章主要介绍了vue中实现组件跟随鼠标位置弹出效果,本文通过图文示例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 使用VUE+iView+.Net Core上传图片的方法示例

    使用VUE+iView+.Net Core上传图片的方法示例

    这篇文章主要介绍了使用VUE+iView+.Net Core上传图片的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • vue2项目使用sass的示例代码

    vue2项目使用sass的示例代码

    本篇文章主要介绍了vue项目使用sass的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 详解Vue2中组件间通信的解决全方案

    详解Vue2中组件间通信的解决全方案

    Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单。下面这篇文章主要给大家介绍了关于Vue2中组件间通信的解决全方案,文中通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Vue插槽简介和使用示例详解

    Vue插槽简介和使用示例详解

    插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签,这篇文章主要介绍了Vue插槽的理解和使用,需要的朋友可以参考下
    2023-03-03
  • vue-draggable实现pc端拖拽效果

    vue-draggable实现pc端拖拽效果

    这篇文章主要为大家详细介绍了vue-draggable实现pc端拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 使用vue中的混入mixin优化表单验证插件问题

    使用vue中的混入mixin优化表单验证插件问题

    这篇文章主要介绍了使用vue中的混入mixin优化表单验证插件,本文是小编给大家总结的一些表单插件的问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07

最新评论