Vue Router 实现原理
在了解路由模式前,我们要先清楚,
vue-roter
的实现原理是怎样的,什么是单页面应用,特点是什么,这样更容易加深对路由的理解。
SPA
单页面及应用方式:单一页面应用程序,只有一个完整的页面;它在第一次加载页面时,就将唯一完整的
html
页面和所有其余页面组件一起下载下来,这样它在切换页面时,不会加载整个页面,而是只更新某个指定的容器中内容。
单页面应用(
SPA
)的核心之一是: 更新视图而不重新请求页面。
路由器对象底层实现的三大步骤即(1)
监视
地址栏变化;(2)
查找
当前路径对应的页面组件;(3)将找到的页面组件
替换
到
router-vieW
的位置。
vue-router
在实现单页面前端路由时,提供了两种方式:
Hash
模式和
History
模式;vue2 是根据
mode
参数来决定采用哪一种方式,vue3 则是
history
参数,下面我们将围绕这个属性进行进一步了解。
vue-router
默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。
hash
(#)是
URL
的锚点,代表的是网页中的一个位置,单单改变
#
后的部分,浏览器只会滚动到相应位置,不会重新加载网页,也就是说
#
是用来指导浏览器动作的,对服务器端完全无用,
HTTP
请求中也不会不包括
#
,同时每一次改变
#
后的部分,都会在浏览器的访问历史中增加一个记录,使用 "后退" 按钮,就可以回到上一个位置,所以说
hash
模式通过锚点值的改变,根据不同的值,渲染指定
DOM
位置的不同数据。
#
符号本身以及它后面的字符称之为
hash
,可通过
window.location.hash
属性读取。
hash
虽然出现在URL中,但不会被包括在
HTTP
请求中。它是用来指导浏览器动作的,对服务器端完全无用,因此,改变
hash
不会重新加载页面
可以为
hash
的改变添加监听事件: