阅读 1528

vue3.0 Beta发布了

vue 3 进入 beta 阶段

2020 年 4 月 16 日,vue 3.0 Beta 测试版发布了。

同日,尤大参加了 State of Vue 的线上活动,以下是他上传到 google docs 上的 slides : State of Vue Apr 16 2020

vue 3 核心

进入 Beta 阶段意味着什么?

目前,所有被列入计划的 RFCs 已经实现了,接下来 Vue 团队的重点是让 Vue 3 变得更加稳定,以及让 vue 相关的第三方库支持 vue 3。

vue 3.0 主要变化:

主要体现在 性能Tree-shaking supportComposition APIFragmentTeleportSuspenseTypeScript支持度自定义 Render 上。

性能

重写了Vdom

编译优化

更加高效的组件初始化

性能提升1.2~2x

服务端渲速度提高2~3x

Tree-shaking

​ vue 3 支持 Tree-shaking,从而大大得减少了 vue 的打包体积。 在 2.x 版本中,无论我们使用 Vue 核心中的哪些功能,所有未使用的功能最终都会进入我们的生产代码。而 vue 3 支持 tree-shaking,这意味着如果你不使用它的某些功能(例如transition组件或 v-model指令),则这些功能将不会包含在你的产品包中 。

Composition API

​ Composition API 类似于 React Hooks。 Vue3.0 将抛弃之前的 Class API 的提案,选择了 Function API。目前,vue 官方 也提供了 Vue3.0 特性的尝鲜版本,前段时间叫 vue-function-api,目前已经改名叫 composition-api

Fragments

​ template 模板中不再限制只有一个根节点,可以支持多个根节点

​ render函数也可以返回数组

​ Fragments,即 片段, 类似于 React.Fragments,vue 2 中也有对应的库 vue-fragments 。Fragment 看起来像是普通的 DOM 元素,但它是虚拟的,根本不会在 DOM 树中渲染。这样我们就可以将组件功能绑定到单个元素中,而无需创建冗余的 DOM 节点。

Teleport

​ Teleport 类似于 react 的 Portal。它可以使我们能够将一些HTML代码传送到组件外部应用程序中的另一个位置。例如,弹窗,通过 Teleport ,可以把弹窗直接挂在到 body 节点上,解决了弹窗被遮挡的问题 。

Suspense

​ Suspense 会延迟你的组件渲染,当某个条件触发时才会回调渲染该组件。相当于 slots 的组件。在 Suspended-component 完全渲染前,回调绑定将会一直展现。

<Suspense>
  <template >
    <Suspended-component />
  </template>
  <template #fallback>
    Loading...
  </template>
</Suspense>
复制代码

Better TypeScript Support

​ Vue官方从 2.6.X 版本开始就部分使用Ts重写了,对ts的支持会更加友好。

Custom Renderer API

​ 可以实现用 DOM一样使用Vue3 来进行 webgl 编程。vue-fragments

其他

文档和迁移进度

路由

vuex

vue-cli

vue-test-utils

DevTools

IDE Support (Vetur)

Nuxt

What About 2.x?

总结

虽然 vue 3 已经进入 beta 阶段,但是还没有完全完善,一些vue相关的第三方库还没有完全支持。但是,vue 3 必然是一个趋势,随着 vue 3 越来越完善,在使用 vue 2.x 的项目中必然要面临着升级 vue 3 的问题。时时关注 vue 3 的新特性,对以后的开发有很大的帮助......