Vue和React框架原理学习

一,Vue框架原理

Vue.js是一个MVVM(Model-View-ViewModel)模式的渐进式JavaScript框架。在MVVM设计模式中,数据模型(Model)、用户界面(View)和ViewModel三者之间存在密切的关系和交互。

具体来说,View即视图代表了UI组件,也就是HTML部分,它负责数据的展示;Model则是数据模型,可以是vue组件里的data或者vuex里的数据,它包含了数据的定义以及操作的业务逻辑;而ViewModel则作为连接Model和View的桥梁,监听模型数据的改变和控制视图行为、处理用户交互。

当一个Vue实例创建时,Vue会遍历data中的属性,通过Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,一旦属性被访问和修改,就会触发相应的通知以完成更新。这就是Vue实现数据驱动视图的核心机制。

总的来说,Vue的原理主要包括了数据双向绑定、模板解析、虚拟DOM和diff算法等关键部分,这些共同构成了Vue的数据驱动开发的核心理念。

1.数据双向绑定

Vue.js的数据双向绑定是通过数据劫持结合发布者-订阅者模式实现的。具体来说,当一个Vue实例创建时,Vue会遍历data中的属性,通过Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖。一旦属性被访问和修改,就会触发相应的通知以完成更新。

2.模板解析

模板解析是Vue的另一个重要特性。模板是Vue中的HTML部分,它负责数据的展示。Vue的编译器会把模板解析成渲染函数(将静态标签和文本内容转化为可执行的Javascript代码),然后对这些渲染函数进行优化,生成可以直接执行的代码。

3.虚拟DOM

虚拟DOM是用JavaScript对象模拟真实DOM树的结构,然后将这个虚拟的DOM树映射到实际的DOM树上。主要是为了提高页面渲染的效率。直接操作DOM是非常耗费性能的,因为每一次DOM的操作,都会引发浏览器的重排和重绘,导致大量的性能损耗。而虚拟DOM则是一个用JavaScript对象模拟真实DOM树的结构,个元素就是一个JavaScript对象,包含了元素的各种属性和方法,它可以通过对这个虚拟的DOM树进行操作,达到间接操作真实DOM的目的。

更重要的是,虚拟DOM内部实现了一套高效的Diff算法。当状态发生变化时,虚拟DOM会根据对比新旧虚拟DOM树的差异,找出最小的变更,然后只更新需要变动的部分。这样,大大减少了对真实DOM的操作次数,进一步优化了性能。

4.Diff算法

diff算法也是Vue中的重要部分。当状态发生变化时,Vue会根据对比新旧虚拟DOM树的差异,找出最小的变更,然后只更新需要变动的部分,达到高效更新视图的目的。

二,React原理

1.JSX:

JavaScript XML,这是一种JavaScript的语法扩展,它允许将HTML和JavaScript混合在同一个文件中编写。通过JSX,可以在JavaScript中编写类似HTML的代码,使代码更易于阅读和理解。

2.Diffing算法:

在渲染组件时,React使用虚拟DOM来提高性能。当组件的状态发生变化时,React会通过比较新旧虚拟DOM的差异来确定哪些部分需要更新,这个过程称为Diffing。

3.Fiber架构:

Fiber是一种调度算法,用于实现更高效的任务调度和优先级管理。React使用Fiber来改进其更新过程,使其能够进行长时间的计算或批处理多个更新,从而提高应用的性能。

4.Time Slice:

为了保持UI的流畅性,React将每一帧的工作时间分割成一段段小的时间片,每一段的时间片由React来控制和管理,这种机制称为Time Slice。

5.Virtual DOM:

Virtual DOM是一个编程概念,它是一个轻量级的JavaScript对象,代表了真实的DOM结构。React通过比较新旧虚拟DOM的差异来确定如何高效地更新实际的DOM。

6.组件化:

React的核心思想是构建可复用的组件。组件是React应用的基本构建块,每个组件都有自己的状态和UI,当组件的状态发生变化时,React会自动更新组件的UI。

三,React与Vue之间的区别和共同点

1.共同点:

(1)在原理上,二者都使用了虚拟DOM来提高页面渲染的效率。

(2)同时,它们都支持响应式和组件化,能够提供丰富的前端开发体验。

(3)此外,二者都将注意力集中在核心库上,而将其他功能如路由和全局状态管理交给相关的库。

2.区别:

虽然React和Vue有很多共同点,但它们之间还是存在一些区别的。

(1)在语法上,Vue使用模板语法,而React使用JSX语法。

(2)在数据的管理上,Vue和React也存在区别:Vue使用双向数据绑定,可以实现视图和数据的实时同步;而React采用单向数据流,实现了高效的状态管理(React强调状态的不可变,所以不能修改状态而是用新状态替换它)。

(3)在渲染方式上,Vue会追踪每一个依赖的变化,只更新变化的组件树,而React则会重新渲染整个组件树。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值