vue-router源码学习笔记

参考链接:
https://github.com/DDFE/DDFE-blog/issues/9
https://juejin.im/post/58611353ac502e006739e188
https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90
一、前端路由变化的底层实现原理和API
首先说一下如何对前端路由进行操作,整理后绘出xmind文件。接着再说一下vue-router这个插件的注册实现。

image.png

二、插件注册
import Router from 'vue-router'
Vue.use(Router)
Vue.js 提供了插件机制 .use(plugin),这个插件机制会调用该 plugin 对象的 install 方法。


image.png

image.png

defineReactive解答了如何根据不同的url渲染不同的组件 ---- beforeCreate 钩子函数中,在最后通过 Vue 的工具方法给当前应用实例定义了一个响应式的 _route 属性,值就是获取的 this._router.history.current,也就是当前 history 实例的当前活动路由对象。给应用实例定义了这么一个响应式的属性值也就意味着如果该属性值发生了变化,就会触发更新机制,继而调用应用实例的 render 重新渲染,router-view组件的render函数会被执行。

三、vue-router实例化
install.js实现了vue-router的注册使用,接着说说vue-router中index.js暴露出的类VueRouter,其中有两个重点:根据routes创建match函数;根据mode实例化具体的history实例。


image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回忆: 我们知道,h5的history或者hash帮助我们解决了,变化url跳转页面不发送请求,并且我们能监听到u...
    LoveBugs_King阅读 9,069评论 0 5
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 8,139评论 1 4
  • 前言 Vue 是一个渐进式的框架,这意味着你可以只使用 Vue 的核心库来开发,但是当你在开发一个完整的业务项目时...
    心_c2a2阅读 5,314评论 0 5
  • SPA单页应用 传统的项目大多使用多页面结构,需要切换内容的时候我们往往会进行单个html文件的跳转,这个时候受网...
    视觉派Pie阅读 14,090评论 1 55
  • vue-cli搭建项目 确保安装了node与npm 再目标文件夹下打开终端 执行cnpm i vue-cli -g...
    Akiko_秋子阅读 8,498评论 1 22