Vue 前端路由工作原理

一.前端路由介绍:
        路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同。

        传统的网页根据用户访问的不同的地址,浏览器从服务器获取对应页面的内容展示给用户。这样造成服务器压力比较大,而且用户访问速度也比较慢。在这种场景下,出现了SPA(单页面架构)。        

        SPA(单页面架构),指的是应用一个主页面,通过动态替换DOM内容并同步修改url地址来模拟多页面应用的效果.切换页面的功能由前端脚本来完成,而不是后端渲染完毕后前端只负责显示.

二.前端路由主要的两种实现方式及原理:
1.location.hash+hashchange事件
实现原理:

        location.hash始终指向页面url 中#之后的内容,通过hashchange事件可以监听location.hash的变化,从而进行相应的处理即可。

触发hash的改变:

        1.设置a标签,href = '#/home',当点击标签的时候,可以在当前url的后面增加上'#/home',同时触发hashchange,再回调函数中进行处理

        2.直接在js中对location.hash = '#/blue'即可,此时url会改变,也会触发hashchange事件。

 

上图代码通过hashchange事件,点击相应的a链接,使url地址相应的改变,从而实现切换页面的功能.

2.history.pushState()+popState事件
实现原理:

       history 提供了 pushState 和 replaceState 两个方法,这两个方法改变 URL 的 path 部分不会引起页面刷新

history.pushState(data[,title][,url]);//向历史记录中追加一条记录
history.replaceState(data[,title][,url]);//替换当前页在历史记录中的信息。
        history 提供类似 hashchange 事件的 popstate 事件,但 popstate 事件有些不同:通过浏览器前进后退改变 URL 时会触发 popstate 事件,通过pushState/replaceState或<a>标签改变 URL 不会触发 popstate 事件。好在我们可以拦截 pushState/replaceState的调用和<a>标签的点击事件来检测 URL 变化,所以监听 URL 变化可以实现,只是没有 hashchange 那么方便。

 

  上图代码通过popState事件,点击相应的a链接,使url地址相应的改变,从而实现切换页面的功能.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值