vue router原理(简单易懂的)

介绍

前端路由就是用户事件和事件处理函数之间的对应关系,也就是不同的用户事件要对应不同的页面内容

Vue Router其实也是一个插件,那就肯定需要利用vue.use()进行注册,但是在注册时需要调用插件的install方法,所以Vue Router中也定义了install()

例子(以history模式为例)

假如页面中有个声明式导航,当点击它的时候,会发生什么事情呢?

首先要知道也是一个组件,他被定义在Vue Router当中,它会传入路径参数,最终会被渲染为a标签。为了生成a标签的虚拟dom,这里得使用render函数,而不能用template模板

不能用template模板原因?
用template模板会报错,vue是有两个版本的(运行时版本和完整版);
(1)运行时版:不支持template模板,需要打包的时候提前编译。
(2)完整版:包含运行时和编译器,体积比运行时版大10k左右,程序运行的时候把模板转换成render函数。性能低于运行时版本。
但是使用vue-cli创建的项目默认为运行时版本

点击了会触发一个函数,在这个函数中要做几件事情,通过history.pushState()改变地址栏,并修改存放当前地址路径的变量(响应式的)。

这样在中会渲染对应的内容,同样是一个组件,被定义在Vue Router中,它通过当前的地址路径找到对应的组件,并通过render函数转化成虚拟dom,至此就完成了一个具有最简单功能的Vue Router

在history模式下,另外一个比较重要的history API就是popstate(),它是用来去监听浏览器历史操作变化的,当浏览器历史操作变化时,需要修改存放当前地址路径的变量,这样页面组件才能发生响应的变化

插眼

关于Vue Router更加复杂的功能暂时还没有读源码,比如嵌套等

你可能感兴趣的:(#,vue,vue.js,javascript,前端)