Vue Router實現(xiàn)新窗口打開的三種方法
在Vue開發(fā)中,經(jīng)常需要實現(xiàn)新窗口打開路由頁面的需求。本文將系統(tǒng)介紹Vue Router中實現(xiàn)新窗口打開的三種主要方法,包括router-link組件方式、編程式導航方式和原生window.open方式。
一、router-link組件方式
最簡單的方式是使用router-link組件的target="_blank"屬性:
<template>
<router-link
to="/new-page"
target="_blank"
rel="noopener noreferrer"
>
打開新窗口
</router-link>
</template>特點:
- 簡單直接
- 適合靜態(tài)鏈接
- 需要添加
rel="noopener noreferrer"防止安全漏洞
二、編程式導航方式
通過$router.resolve配合window.open實現(xiàn):
<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>特點:
- 最推薦的方式
- 保持路由配置一致性
- 支持動態(tài)參數(shù)傳遞
三、原生window.open方式
直接拼接完整URL實現(xiàn):
<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
}
]
})參數(shù)傳遞對比
| 方法 | 參數(shù)傳遞方式 | 適用場景 |
|---|---|---|
| router-link | 通過:to綁定對象 | 靜態(tài)鏈接 |
| 編程式導航 | 通過query對象 | 動態(tài)參數(shù) |
| 原生window.open | URL拼接 | 簡單場景 |
到此這篇關(guān)于Vue Router實現(xiàn)新窗口打開的三種方法的文章就介紹到這了,更多相關(guān)Vue Router新窗口打開內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue創(chuàng)建項目后沒有webpack.config.js(vue.config.js)文件的解決
這篇文章主要介紹了Vue創(chuàng)建項目后沒有webpack.config.js(vue.config.js)文件的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Vue props 單向數(shù)據(jù)流的實現(xiàn)
這篇文章主要介紹了Vue props 單向數(shù)據(jù)流的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
使用VUE+iView+.Net Core上傳圖片的方法示例
這篇文章主要介紹了使用VUE+iView+.Net Core上傳圖片的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

