vue-router源码

路由原理

前端路由的实现原理.

采用某种方式使url发生改变。这种方式可能是调用HTML5 history API实现,也可能是点击前进后退

或者改变路由hash.但是不管采用哪种方式,它都不能造成浏览器刷新,仅仅只是单纯的url发生变化.


监听到url的变化之后,根据不同的路径获取渲染内容,再把内容填充到div容器里.从上面案例可知,监

听url的变化一般在两个地方,第一是在window.onpopstate包裹的回调函数里,第二是在执行

history.pushState或history.replaceState的后面.


vue-router的底层逻辑同样如此,比如平时中经常使用的<router-link to="home">类似于上面案例中

的a标签,它的底层就是利用history.pushState或history.replaceState(当路由mode选择'history'时)改

变url的.而<router-view/>相当于上方app容器元素,监听不同路径再根据路径值拿到相应的页面组件并渲染出来.
 

后端路由

缺点:每次url地址都会触发服务器,服务器来解析的,像京东淘宝这种大型的, 对服务器压力别较大,就会出现前端路由

前端路由:

 vue-router 是vue这个技术栈实现前端路由的一个方法

其中第二步触发监听事件,不同模式触发会不同, hash模式会用hashchange触发监听事件,

Hash和History:

vue.use作用:1.执行里面的方法    2. 然后new了一个路由实例(创建路由实例)  说明这个vue-router的源码一定是个构造函数

在上面VueRouter构造函数里主要做了两件事.

第一它会根据mode配置不同生成相对应的history对象,history对象是具体执行各种路由操作的执行者.
第二它通过调用createMatcher函数生成了this.matcher对象.这个this.matcher正是解决我们上面遭遇的路径匹配的难题.
————————————————

在nodemodules看源码,

 然后构造函数暴露到入口文件里

 根据  curent ,当前的规则路由表,找到对应的模块(组件)

路由守卫,路由拦截:

实现原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值