vue3有了哪些提升

Vue3引入了Proxy实现响应式原理,新增CompositionAPI提高代码组织和复用性。Suspense用于异步组件渲染,Portals允许在不同DOM层次中插入组件。Vue3还支持Fragments减少DOM层级,提供了更好的TS支持和Treeshaking优化包大小。
摘要由CSDN通过智能技术生成

一、vue3的新特性及新增api

1.响应式原理

vue2的响应式原理是利用Object.defineProperty而vue3则是利用Proxy。。

2.新增了组件 API(Composition API)

vue2使用的是options API而3新增了Composition API(注意是新增,也就是说这两个可以共用,甚至可以互相嵌套使用兼容性很好)

3.片段-碎片(Fragments)

这个类似于react Fragments组件(react Fragment官方文档)。其实就是vue2的时候每个组件必须要有根组件,而vue3就可以不必这样(减少不必要的dom元素)。

4.Suspense

将被用在 Vue 3 中的另一个从 React 学来的功能是 Suspense 组件。Suspense 能够暂停你的组件渲染,并渲染后备组件,直到条件满足为止。react Suspens官方文档(我的理解:当在加载异步组件的时候,等待所有组件加载完毕之前可以做一些事情类似于promise.all())。举个例子比如父组件请求接口需要3秒请求过来,而子组件是用来显示请求结果的这就是典型的异步组件。这个时候我们就可以用Suspense,实现在等待的时候展现一个组件(就比如移动端页面加载完毕之前都会有骨架,我们·就可以用这个实现)。

5.Portals

其实这个就类似于react的Portals(react Portals官方文档)。

Portals 提供了一种独特的方法来将子级渲染到父组件的 DOM 层次结构之外的 DOM 节点中。”

这种处理模式,是弹出式窗口以及通常显示在页面顶部的组件所使用的一种非常好的方法。通过使用 Portals,你可以确保没有任何主机组件 CSS 规则会影响你要显示的组件,并且可以避免用 z-index 进行的黑客攻击。

6.Custom Renderer API:暴露了自定义渲染API(teleport介绍)

7.Tree shaking support:可以将无用模块“剪枝”。

二、vue2和3的变化

1.响应式原理实现发生了变化。

2.新增了一些api

3.性能上发生了很大的变化:

1.diff算法上优化(让dom渲染时间缩小)

2.响应式原理的优化(减少源码量大小)

3.项目包大小的优化(vue3的cli打包后会比vue2小)

4.更好的支持typescript(这个是直接可以使用)

5.Tree shaking support:可以将无用模块“剪枝”。(模块按需加载减少包大小)

vue2 迁移 到 vue3

综上所述vue3会比vue2快上2到3倍(越大的项目越明显)。而且vue3(可以兼容ie11,应该是需要配置的)和vue2可以完美兼容(尤大大说不必,把项目立即升级vue3)。

一、Composition API

Composition API,即组合式API

高内聚

聚合业务逻辑,提高代码可读性

vue2 通过属性选项(options,如 data、computed、methods 等)书写代码逻辑,代码逻辑点是碎片化、跳跃式的,在大型项目和复杂组件中使得维护变得困难。

vue3 的组合式API能够将分散的逻辑代码组合在一起,使代码逻辑更清晰易读。

低耦合

便于代码拆分,提高复用性

Vue2 中的一个常用代码复用方式是 mixins 混入,mixins在一些场景下确实能很大的提升代码复用率,但同时也会带来一些副作用,比如依赖关系不清晰,mixins里定义的data和methods等在组件中使用时没有明确的引入和定义,而且可能与组件里定义的有命名冲突,有很大的维护风险。

得益于组合式API,vue3里可以通过自定义hooks来实现类似mixins的复用效果,而且不会有vue2里mixins的缺点。

二、Teleport

Teleport,即传送门。

能在不改变组件内部元素父子关系的情况下,将子元素“传送”到其他指定节点下渲染

三、Fragment

Fragment,即片段。

在 2.x 中,由于不支持多根节点组件,当开发者意外创建多个时会发出警告。 在 3.x 中,组件可以包含多个根节点。Vue3 中,组件的 template 被一层不可见的 Fragment 包裹,支持多个根节点。能够减少 dom 层级、提升渲染性能。

四、Emits

Emits,即组件触发的自定义事件。

在vue2中,组件封装时触发自定义事件给父组件,都是通过 this.$emit()触发,但是触发地点可能会遍布在组件内各个地方,没有统一管理,使用不方便。

vue3里,所有自定义事件都要在emits里定义,和定义props类似,而且还能对事件做自定义校验。这样在使用组件时很方便的就能知道有哪些事件可以使用。

五、动态css

<style> 样式标签可以通过 v-bind 绑定<script>里定义的变量,来实现动态的css样式。

六、Tree shaking

Tree shaking,一种按需打包的方式。

由于 es6 的模块化导入导出是静态可分析的,所以在打包的时候通过解析js代码就能明确知道哪部分代码使用了、哪部分代码没有使用,然后只对使用到的代码进行打包,这样就能实现按需打包的效果。

七、VDOM

VDOM,即vue里的虚拟DOM。

vue3里对VDOM进行了重写,优化了Diff算法:

vue2在对比VDOM时,会遍历整个VDOM树,从根节点依次递归遍历到末节点,从而找出所有变化的节点进行局部更新。

vue3会区分静态DOM节点和动态DOM节点,对动态DOM节点做一个 PatchFlag 标记,并将动态节点与根节点绑定,这样,在数据更新对比VDOM时,会从根节点里查找 PatchFlag 标记,跳到动态节点上直接比较,不用遍历静态节点,提升渲染更新的性能。

十、TS支持

TypeScript,是js的一个超集,或者说是加了一层包装,对js做了功能拓展和更严谨的代码校验。

  • vue2对ts的支持很不友好,强行使用ts需要引入很多库,使用繁琐,而且支持也不全面。

  • vue3本身就是用ts编写的,对ts可以说是全方位的支持。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue 3相比于Vue 2提升了更快的渲染速度,更好的类型安全性,更灵活的组件通信机制,更强大的路由系统,更容易的服务器端渲染,更全面的 TypeScript 支持,更优化的代码结构,以及新的调试工具。 ### 回答2: Vue 3相比于Vue 2在以下几个方面有了明显的提升。 1. 性能提升Vue 3通过优化虚拟DOM的算法和编译器,显著提高了性能。新的响应式系统使用了基于Proxy的数据劫持,比Vue 2的Object.defineProperty更高效,能够更好地追踪数据的变化。 2. 打包体积减小:Vue 3移除了一些过时的API,整个库的打包体积比Vue 2减小了约30%,减轻了网络传输负担,提速了页面加载速度。 3. 组合式API:Vue 3引入了组合式API,使得组件逻辑可以更加清晰地组织和重用。开发者可以通过API自由组合逻辑代码,更好地划分功能,提高了代码的可维护性。 4. TypeScript支持:Vue 3对TypeScript的支持更加友好,大部分核心API都有了相应的类型声明,开发者可以更早地发现潜在的错误,并且编辑器能够提供更好的代码提示和补全。 5. 更好的升级途径:Vue 3可以与Vue 2共存,并提供了更好的升级途径。Vue 3提供了一个逐步升级的工具,帮助开发者平滑过渡到新版本,从而降低了升级的风险。 总的来说,Vue 3在性能、打包体积、API设计、TypeScript支持和升级途径等方面都有了明显的提升,使得开发者能够更加高效、舒适地使用Vue进行开发。 ### 回答3: Vue 3相比于Vue 2在性能、体积、使用体验和开发者工具等方面有了很多提升。 首先是性能方面的提升Vue 3通过使用Proxy代理对象替代了Vue 2中的Object.defineProperty方法,使得响应式系统的性能得到了显著提升。此外,Vue 3还引入了静态树优化和组件级别的缓存优化,可以减少不必要的渲染操作,提高页面性能。 其次是体积方面的提升Vue 3采用了更好的Tree-Shaking机制和模块化设计,可以让开发者只引入所需的功能代码,从而减小项目的体积。这使得Vue 3在移动端和网络环境较差的情况下有更好的表现。 再者,Vue 3在使用体验方面也有了很多提升Vue 3引入了Composition API,提供了更加灵活的组合式编程方式,使得代码逻辑更加清晰和可维护。此外,Vue 3还提供了更好的TypeScript支持,让开发者在开发过程中能够更快速、更准确地发现错误。 最后,开发者工具方面也有了很多改进。Vue 3的开发者工具更加强大和易用,提供了更多的工具和功能,如更好的性能监控和调试工具等,可以帮助开发者更高效地进行开发和调试工作。 总结来说,Vue 3相比于Vue 2在性能、体积、使用体验和开发者工具等方面都有了明显的提升,使得开发者能够更加高效、更加愉快地开发Vue应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值