Vue源码初探

53 阅读3分钟

前言

最近每天花了些时间去研究 Vue2 的源码,因为工作中使用的技术栈还是 Vue2,虽然现在都推荐直接去读 Vue3 的源码,毕竟看新不看旧,但我还是觉得有必要看看 Vue2,毕竟学习是一个渐进的过程,围绕工作来学习某块知识,在工作中立马能用到,那么对这块知识的掌握程度就会更深。而且 Vue2 也是一个相当经典的版本值得一读,它和 Vue3 还是存在许多差异的,比如如何侦测一个对象的变化?Vue3 使用的是 proxy,而 Vue2 中使用的是 Object.defineProperty,因为在那时 ES6 在浏览器的支持度还不够理想。除此之外,Vue2 和 Vue3 在架构设计、性能优化、响应式系统、对 TypeScript 的原生支持、API 等层面设计都有所不同。

关于 Vue.js

随着应用程序复杂度的日益递增,需要频繁的操作 DOM 去修改数据更新视图,早年我们使用的 JQuery 就是频繁的去操作 DOM,这种方式又称为命令式写法,比如我要修改页面上某个元素的文本内容,我需要先获取该 DOM 元素,然后操作 DOM 将其内容替换掉,这是需要一步步来完成的。而 Vue.js 是基于数据驱动视图,也就是声明式的写法,我们只需要给页面上某个 DOM 元素绑定其依赖的数据变量(可能是 data 中的一个变量),当数据发生变化时,不需要我们去操作 DOM,视图能自动更新。

Vue.js 是一个渐进式的框架。渐进式框架指的就是将框架分层,最核心的部分是视图层渲染,然后往外是组件机制,在这个基础上再加上路由机制,再加入状态管理,最外层是构建工具。所谓分层,就是我们可以只选择最核心的视图层渲染来快速开发一个需求,也可以选择一整套全家桶来开发应用。Vue.js 有足够的灵活性来适配不同的需求,所以我们可以根据自己的需求来选择不同的层级。

image.png

为什么要读源码?

接下来说说我为什么要读源码。

  • 攻克以前对阅读源码的恐惧
  • 检验基础知识是否过关
  • 学习优秀框架的设计思路、运用的设计模式、性能优化等
  • 在工作中遇到问题能快速定位问题,解决问题能做到游刃有余

安排

接下来会更新 Vue 从初始化到挂载全流程以及响应式系统,这也是我目前源码看到的进度,后续会更新更多。

结语

我是 luckyCover,一个喜欢学前端、唱歌、打篮球、乒乓球、健身的全能型选手, 本篇内容会收录到 Vue源码分析的专栏中 --> luckyCover 的个人主页 - 专栏 - 掘金,欢迎大家留言点赞支持下呀~