那个男人带着他的vue3.0来了
随着尤大大很自豪地宣布Vue.js 3.0“ One Piece”的正式发布。该框架的新主要版本提供了改进的性能,更小的捆绑包大小,更好的TypeScript集成,用于处理大规模用例的新API,以及为框架的长期未来迭代奠定了坚实的基础。
3.0版本代表了2年多的开发工作,具有30多个RFC,2600多个提交,来自99个贡献者的628个拉取请求,以及核心回购之外的大量开发和文档工作。我们要对我们的团队成员应对挑战表示最深切的谢意,我们对拉动请求的贡献者,对财务支持的赞助者和支持者,以及更广泛的社区对我们的设计讨论和反馈提供了最深切的谢意。发行版本。Vue是为社区创建并由社区支持的独立项目,如果没有您的一贯支持,Vue 3.0将无法实现。
进一步推进“渐进框架”概念
Vue从一开始就具有一个简单的使命:成为任何人都可以快速学习的易于接近的框架。随着我们用户群的增长,该框架的范围也不断扩大,以适应不断增长的需求。随着时间的流逝,它演变成我们所谓的“渐进框架”:可以逐步学习和采用的框架,同时随着用户处理越来越苛刻的场景而提供持续的支持。
如今,在全球拥有130万用户*的情况下,我们看到Vue在各种各样的场景中使用,从在传统的服务器呈现的页面上增加交互性到具有数百个组件的功能完善的单页面应用程序。Vue 3进一步提高了这种灵活性。
分层内部模块
Vue 3.0内核仍然可以通过一个简单的<script>
标签使用,但其内部结构已被彻底重写为一组解耦的模块。新的体系结构提供了更好的可维护性,并允许最终用户通过摇树来减少运行时大小的一半。
这些模块还公开了可解锁许多高级用例的低级API:
- 编译器支持用于构建时自定义的自定义AST转换(例如,构建时i18n)
- 核心运行时提供了一流的API,用于创建针对不同渲染目标(例如本机移动设备,WebGL或终端)的自定义渲染器。默认DOM渲染器使用相同的API构建。
- 该
@vue/reactivity
模块导出的功能可以直接访问Vue的反应系统,并且可以用作独立程序包。它可以与其他模板解决方案(例如lit-html)配对,甚至可以用于非UI方案。
解决规模问题的新API
2.x基于对象的API在Vue 3中是完整的。但是,3.0还引入了Composition API-一组新的API,旨在解决大型应用程序中Vue使用的难点。Composition API建立在反应性API之上,与2.x基于对象的API相比,可实现类似于React挂钩的逻辑组成和重用,更灵活的代码组织模式以及更可靠的类型推断。
通过@ vue / composition-api插件,Composition API也可以与Vue 2.x一起使用,并且已经有适用于Vue 2和3的Composition API实用程序库(例如vueuse,vue-composable)。
性能改进
与Vue 2 相比,Vue 3在捆绑包大小(通过摇树减轻了多达41%的重量),初始渲染(加快了多达55%的速度),更新(加快了133%的速度)和内存使用率方面表现出了显着的性能改进最多减少54%)。
在Vue 3中,我们采用了“编译器信息虚拟DOM”的方法:模板编译器执行激进的优化并生成渲染函数代码,以提升静态内容,为绑定类型留下运行时提示,最重要的是,将内部的动态节点展平一个模板,以减少运行时遍历的成本。因此,用户可以两全其美:通过模板优化编译器的性能,或者在用例需要时通过手动渲染功能直接控制。
改进的TypeScript集成
Vue 3的代码库是用TypeScript编写的,具有自动生成,测试和捆绑的类型定义,因此它们始终是最新的。Composition API可以很好地处理类型推断。Vetur是我们的官方VSCode扩展,现在利用Vue 3改进的内部键入功能支持模板表达式和props类型检查。哦,如果您愿意,Vue 3的打字完全支持TSX。
实验特征
我们为单一文件组件(SFC,又名文件)提出了两个新功能.vue
:
这些功能已在Vue 3.0中实现并可用,但仅出于收集反馈的目的而提供。在RFC合并之前,它们将保持试验状态。
我们还实现了一个当前未记录的<Suspense>
组件,该组件允许async setup()
在初始渲染或分支开关上等待嵌套的异步依赖项(异步组件或带有的组件)。我们正在与Nuxt.js团队一起测试和迭代此功能(Nuxt 3即将发布),并且可能会在3.1中进行巩固。
分阶段发布流程
Vue 3.0的发布标志着该框架的全面就绪。尽管某些框架子项目可能仍需要进一步的工作才能达到稳定状态(特别是devtools中的路由器和Vuex集成),但我们认为今天使用Vue 3启动新的绿色项目是合适的。我们还鼓励图书馆作者开始升级您的项目以支持Vue 3。
请查阅《Vue 3库指南》以获取有关所有框架子项目的详细信息。
迁移和IE11支持
由于时间限制,我们已推迟了迁移版本(具有v2兼容行为的v3版本+迁移警告)和IE11版本,并计划在2020年第四季度重点关注它们。因此,计划迁移现有v2应用程序的用户或要求IE11支持人员此时应意识到这些限制。
下一步
发布后的短期内,我们将专注于:
- 迁移版本
- IE11支持
- 新devtools中的Router和Vuex集成
- Vetur中模板类型推断的进一步改进
目前,针对Vue 3和v3的项目的文档网站,GitHub分支和npm dist标签将保持next
标明状态。这意味着npm install vue
仍将安装Vue 2.x和npm install vue@next
Vue3。我们计划在2020年底之前将所有文档链接,分支和dist标签切换为默认值3.0。
同时,我们已经开始计划2.7,这将是2.x发行版的最后一个计划的次要发行版。2.7将向后移植来自v3的兼容改进,并发出有关v3中已删除/更改的API使用情况的警告,以帮助潜在的迁移。我们计划在2021年第一季度研究2.7,它将在发布后直接变为LTS,具有18个月的维护寿命。