首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

回答:Vue2和Vue3区别?

内部根据功能可以被分为三个大的模块:响应性 、运行时 、编辑器 ,以及一些小的功能点。那么要说 与 的区别,我们需要从这三个方面加小的功能点进行说起。

首先先来说响应性

的响应性主要依赖 进行实现,但是 只能监听 指定对象的指定属性的 行为和 行为,那么这样在某些情况下就会出现问题。

什么问题呢?

比如说:我们在 中声明了一个对象 ,但是在后期为 增加了新的属性,那么这个新的属性就会失去响应性。想要解决这个问题其实也非常的简单,可以通过 方法来增加 指定对象指定属性的响应性。但是这样的一种方式,在 的自动响应性机制中是不合理。

所以在 中, 引入了反射和代理的概念,所谓反射指的是 ,所谓代理指的是 。我们可以利用 直接代理一个普通对象,得到一个 的代理对象。在 中,这个过程通过 这个方法进行实现。

但是 只能实现代理复杂数据类型,所以 额外提供了 方法,用来处理简单数据类型的响应性。 本质上并没有进行数据的监听,而是构建了一个 的类,通过 和 标记了 函数,以此来进行的实现。所以 必须要通过 进行触发,之所以要这么做本质是调用 。

接下来是 运行时

所谓的运行时,大多数时候指的是 ,渲染器本质上是一个对象,内部主要三个方法 ,其中 主要处理渲染逻辑, 主要处理服务端渲染逻辑,而 就是创建 实例的方法。

这里咱们主要来说 , 中为了保证宿主环境与渲染逻辑的分离,把所有与宿主环境相关的逻辑进行了抽离,通过接口的形式进行传递。这样做的目的其实是为了解绑宿主环境与渲染逻辑,以保证 在非浏览器端的宿主环境下可以正常渲染。

再往下是 编辑器

中的 其实是一个 ,其目的是为了把 编译成 函数。逻辑主要是分成了三大步:。其中 的作用是为了把 转化为 , 可以把 转化为 ,最后由 把 通过转化为 。转化的过程中会涉及到一些稍微复杂的概念,比如 有限自动状态机 这个就不再这里展开说了。

除此之外,还有一些其他的变化。比如 新增的 。 在 和 中会有一些不同的呈现,比如说:最初的 以 函数作为入口函数, 函数必须返回两种类型的值:第一是对象,第二是函数。

当 函数返回对象时,对象中的数据或方法可以在 中被使用。当 函数返回函数时,函数会被作为 函数。

但是这种 函数的形式并不好,因为所有的逻辑都集中在 函数中,很容易出现一个巨大的 函数,我们把它叫做巨石(屎山)函数。所以 的时候,新增了一个 的语法糖,尝试解决这个问题。目前来看 的呈现还是非常不错的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230315A01MQK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券