首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vue-router 如何实现支持外部链接

vue-router 如何实现支持外部链接

作者头像
Fivecc
发布2022-11-20 14:04:43
发布2022-11-20 14:04:43
1.3K0
举报
文章被收录于专栏:前端ACE前端ACE

前言

vue项目中 不少场景会遇到外部链接的情况 vue-router官方 提供了扩展RouterLink 的方式 封装成一个组件 AppLink.vue. 但是这种扩展方案 存在以下问题

  • 写法上 由 <router-link> 转变为 <AppLink>
  • 由于是封装的组件 就可能涉及到 style 样式作用域 不一样,可能会发生样式 失效
  • 项目需要额外 维护 AppLink.vue

于是就想到采取另一种方案 扩展源码 来解决以上问题 , 实现 扩展版vue-router

扩展版vue-router

vue2.0 的项目 详解可见 @npm-pkg/vue-router vue3.0 的项目 详解可见 @npkg/vue-router@next

扩展版vue-router

扩展支持自动跳转到外部链接


快速上手

通过CDN: <script src="https://unpkg.com/@npkg/vue-router@next"></script>

将其添加到现有的Vue项目中:

代码语言:javascript
复制
npm install @npkg/vue-router@next
|
yarn add @npkg/vue-router@next

用法

将所有引用 vue-router 的地方用 @npkg/vue-router 去替代

创建路由实例
代码语言:javascript
复制
//# /src/router/index.js

/*
 * 原代码
 */
import {
  createRouter,
  createWebHistory,
} from "vue-router";

// 创建路由实例
export const router = createRouter({
  history: createWebHistory(),
  routes: [{
      ...
  }]
  }
});


//----------------
// 替换为以下代码
//----------------


/*
 * 新代码
 */
import {
  createRouter,
  createWebHistory,
} from "@npkg/vue-router";

//  创建路由实例
export const router = createRouter({
  history: createWebHistory(),
  routes: [{
       ...
  }]
  }
});

/*
 * 其他使用
 */

 import { useRoute, useLink } from "@npkg/vue-router";
 let router = useRouter()
 router.push({path:'/'})

除了 Vue Router 原有用法,它还支持以下扩展写法

代码语言:javascript
复制
// 基础使用

<router-link to="/"></router-link>

<router-link to="/list"></router-link>

<router-link to="https://github.com/npm-pkg/vue-router"></router-link>

<router-link to="https://github.com/npm-pkg/vue-router?author=five-great"></router-link>

<router-link to="https://github.com/npm-pkg/vue-router/tree/v4.0.15#readme"></router-link>

//高级使用

<router-link :to="{path: '/'}"></router-link>

<router-link :to="{path: '/list'}"></router-link>

<router-link :to="{path:'https://github.com/npm-pkg/vue-router'}"></router-link>

<router-link :to="{path:'https://github.com/npm-pkg/vue-router', query:{author: 'five-great'}}"></router-link>

<router-link :to="{path:'https://github.com/npm-pkg/vue-router/tree/v4.0.15',hash:'#readme'}"></router-link>

<router-link :to="{path:'https://github.com/:org/:repo',params:{org:'npm-pkg',repo: 'vue-router'}}"></router-link>

<router-link :to="{path:'https://github.com/:org/:repo/tree/:v',query:{author: 'five-great'},params:{org:'npm-pkg',repo: 'vue-router',v:'v4.0.15'},hash:'#readme'}"></router-link>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 扩展版vue-router
      • 扩展版vue-router
      • 快速上手
      • 用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档