vue vue-router 实现原理

vue vue-router 实现原理

前言
  单页应用只有一个页面,所有的页面切换,其实只是组件之间的隐藏显示而已,所有的页面内容都只在一个html上

vue-router是通过对window.location.hash和windown.history进行封装,来实现将hash或url的变化映射为组件的变化

vue-router在browser中有两种模式hash和history
  hash模式:
    特点:hash模式会在url后面携带#,url不会发生改变,只有#后面的hash参数会发生变化,所以hash参数变化,浏览器并不会发起新的请求

hash改变:

window.location.hash = "new hash";

hash监听:通过window.addEventListener监听hashchange事件察觉hash的改变从而展示对应的component

 window.addEventListener("hashchange", () => {
      console.log("hash changed");
    });

history模式:
    特点:一般来说直接修改url,url的改变会引起浏览器的重新请求,但是使用history下的pushState或replaceState方法时,虽然改变了url但是并不会引起浏览器的重新请求,它们更相当与location.hash=“#new url”,只是在url上#显示为/而已

修改方式:

window.history.pushState({ prop: "value" }, "", "index");
window.history.replaceState({ prop: "value" }, "", "index");
window.history.back();
window.history.forward();//相当于前进按钮
window.history.go(-1);

监听方式:

window.onpopstate = () => {
  console.log("执行改变");
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值