Vue-Router概述
Vue-Router
router意为路由。
Vue是单页面应用,没有那么多html文件,所以要使用路由做页面的跳转
Vue-Router允许用户通过不同的URL访问不同的内容,通过Vue可以实现多视图的单页面Web应用
安装
使用Vue3则安装Vue-Router4;使用Vue2则安装Vue-Router3
1 | npm install vue-router@4 -s |
在main.ts中注册Vue-Router:
1 | import { createApp } from 'vue' |
使用
创建Vue-Router配置文件/src/router/index.ts:
1 | import { createRouter, createWebHistory } from "vue-router" |
准备两个路由组件:
1 | <template> |
1 | <template> |
在App.vue中控制路由:
1 | <template> |
Vue-Router模式
Vue2中的模式配置项为mode,Vue3为history
模式 | Vue2 | Vue3 |
---|---|---|
hash | mode hash | createWebHashHistory |
history | mode history | createWebHistory |
abstract | mode abstract | createMemoryHistory |
平时一般使用history或hash模式,服务端SSR渲染时默认自动开启abstract模式
history
history提供了pushState和replaceState两个方法,这两个方法改变URL的path部分不会引起页面刷新
history提供类似hashchange事件的popstate事件,但popstate事件有些不同:
- 通过浏览器前进后退改变URL时会触发popstate事件
- 通过pushState/replaceState或<a>标签改变URL不会触发popstate事件
- 但是可以通过拦截pushState/replaceState的调用和绑定<a>标签的点击事件检测URL变化
- 通过js调用history的back, go, forward方法时会触发popstate事件
所以history模式监听URL变化可以实现,只是没有hash模式的hashchange那么方便
hash
URL中hash(#)及后面的部分,常用作锚点在页面内进行导航,改变URL中的hash部分不会引起页面刷新
可以通过hashchange事件监听URL的变化
改变URL的方式:
- 通过浏览器前进后退改变URL
- 通过<a>标签改变URL
- 通过window.location改变URL
评论