共同点
在前端 MVVM 的模式下,不同的框架的目标都是一致的,利用数据驱动页面,但是具体怎么处理数据的变化,每个框架都走出了不同的路线
不同点
Angular1
采用的是脏检查。脏检查就是指在对数据的变化的检查上,遵循每次用户交互时都检查一次数据是否变化,有变化就去更新DOM
Vue和 React 框架对比
通知页面更新方式
Vue: 数据变了,框架会主动告诉你修改了哪些数据;
React: 数据变了,只能通过新老数据计算的 Diff 来得知数据的变化
模板书写
React: 在 React 的世界中,只有JSX,最终 JSX 都会在 Compiler 一层编译成JS来执行,所以React组中拥有了全部的 JS 的动态性,因此 React 的API 本身也很少,只有 state hooks component 几个概念
Vue: Vue的世界中默认是template ,语法都是限定死的
框架的发展及性能优化
React
React 的虚拟 Dom 的 Diff 计算逻辑,如果虚拟Dom 过于庞大,使得计算的时间大于16.6ms 可能会造成性能的卡顿,为了突破瓶颈,借鉴了操作系统时间分片的概念,引入了Fiber的架构。简单来说,把整个虚拟 Dom 树微观化,变成链表,利用浏览器的空闲时间计算Diff,一旦浏览器有需求,可以把计算完成的任务放在一旁,把主进程控制权还给浏览器,等待浏览器进入下次空闲
Vue
Vue1的问题是响应数据过多,会带来内存占用过多的问题。
Vue2中引入了虚拟Dom来解决响应式数据过多的问题,组件之间的变化,可以通过响应式来更新,组件内部的数据变化,则通过虚拟Dom去更新页面,这样就把响应式的监听器,控制在了组件级别,而虚拟Dom的量级,也控制在了组件的大小
Vue3 中在虚拟Dom的静态标记上做到了极致,让静态的部分越过虚拟Dom的计算,真正的做到了按需更新,很好的提高了性能