作者|尤雨溪
译者|无明
编辑|覃云
出处丨前端之巅
在上周的 Vue.js 伦敦大会上,尤雨溪简要介绍了 Vue 下一个主要版本要发布的内容,9 月 30 日,尤雨溪在 medium 个人博客上发布了 Vue 3.0 的开发路线,全文如下:
为什么要推出新的主要版本?Vue 2.0 发布于两年前,时间过得真快!在此期间,核心部分仍然向后兼容五个次要版本。我们已经积累了很多改进想法,但都被推迟了,因为它们会导致重大变更。与此同时,JavaScript 生态系统和语言本身也在迅速发展。一些经过重大改进的工具可以增强我们的工作流程,很多新的语言特性为 Vue 试图解决的问题带来更简单、更完整和更有效的解决方案。更令人感到兴奋的是,支持 ES2015 已经成为所有主要浏览器的基准。Vue 3.0 将利用这些新的语言特性让 Vue 核心变得更小、更快、更强大。
Vue 3.0 目前处于原型设计阶段,我们已经实现了接近于 2.x 特性的运行时。下面列出的很多特性要么已经实现了,要么已经确认是可行的。尚未实现或仍处于探索阶段的特性被标记为 *。
高级 API 变更
概要:除了渲染函数 API 和作用域插槽语法之外的所有内容都将保持不变,或者通过兼容性构建让其与 2.x 保持兼容。
因为是主要版本,所以会有一些重大变更。不过,我们非常重视兼容性问题,我们会尽快开始传达这些重大变更。以下是当前计划的公开 API 变更:
源代码架构
概要:更好的内部解耦模块、TypeScript 和更容易维护的代码库。
为了实现更清晰、更易维护的源代码架构,我们从头开始重写 3.0。我们将一些内部功能分解为单独的包,以便隔离复杂性。例如,观察者模块将有属于自己的包,并带有自己的公开 API 和测试用例。请注意,这不会影响到框架级 API——你不需要手动从多个包中导入它们。相反,最终的 Vue 包将会组装这些内部包。
代码库现在也用 TypeScript 编写。虽然这对代码贡献者提出了需要掌握 TypeScript 的要求,但我们相信,TypeScript 的类型系统和 IDE 的支持将让新的代码贡献者更容易做出有意义的贡献。
将 observer 和 scheduler 分离到单独的包中,这样我们就可以探索它们的替代实现。例如,我们可以使用相同的 API 实现与 IE11 兼容的 observer,或者基于 requestIdleCallback 的替代 scheduler*。
新的源代码结构(有可能会变化)
观察机制
概要:更完整、更精确、更高效和可调试的反应性跟踪和用于创建 observable 的 API。
3.0 将带来基于代理的 observer 实现,提供全语言覆盖的反应性跟踪。这消除了 Vue 2 当中基于 Object.defineProperty 的实现所存在的很多限制:
新的 observer 还提供了以下特性:
轻松了解组价为什么被重新渲染
其他运行时改进
概要:更小、更快、可摇树优化的特性、Fragment 和 Portal、自定义渲染器 API。
编译器改进*
概要:对摇树优化友好的输出、更多 AOT 优化、具有更好错误信息和源映射支持的解析器。
IE 11 支持*
概要:使用单独的构建版本来支持 IE 11,但具有与 Vue 2.x 相同的反应性限制。
新的代码库目前仅针对主流持续更新的浏览器,并假设它们都原生支持 ES2015。但是,我们知道很多用户在可预见的未来仍然需要使用 IE 11。大多数常用的 ES2015 功能都可以通过转换或 polyfill 在 IE 11 上运行。
我们的计划是使用相同的 API 实现另一个 observer,但使用旧的 ES5 Object.defineProperty API 来实现。这个 observer 实现将包含在单独的 Vue 3.x 版本。不过,这个构建版本将受到与 Vue 2.x 相同的变更检测警告,与 3.x 的“现代”构建版本不完全兼容。我们知道这将给库作者带来一些不便,因为他们需要了解两个不同版本的兼容性。不过在到达那个阶段时,我们将为此提供明确的指导。
我们将如何实现目标?首先,虽然现在宣布了这些内容,但我们还没有确定的时间表。我们目前所知道的是我们将采取哪些步骤来达成我们的目标:
1. 运行时原型内部反馈
这是我们现在所处的阶段。目前,我们已经有一个可运行的运行时原型,包括新的 observer、Virtual DOM 和组件实现。我们已经邀请了一组有影响力的社区项目作者为内部变更提供反馈,并希望在继续前进之前确保他们对这些变更感到满意。我们希望一些重要的生态系统库在发布 3.0 时能够准备就绪,让依赖这些项目的用户可以轻松升级。
2. RFC 公众反馈
在我们对新设计获得一定程度的信心后,对于每次重大变更,我们都将发布一个专门的 RFC,其中包括:
我们期待来自社区的公众反馈,帮助我们巩固这些想法。
3. 在 2.x 和 2.x-next 中引入兼容功能
我们不会忘了 2.x!事实上,我们计划通过 2.x 逐步让用户适应新的变化。我们将通过 opt-in 适配器逐步将确认的 API 变更引入到 2.x 中。用户可以通过 2.x-next 体验新的基于 Proxy 的 observer。
2.x 的最后一个次要版本将成为 LTS,并在 3.0 发布后继续享受 18 个月的 bug 和安全修复更新。
4. Alpha 阶段
接下来,我们将完成 3.0 版本的编译器和服务器端渲染部分,并开始发布 Alpha 版本。这些主要用于针对一小部分新应用进行稳定性测试。
5. Beta 阶段
在测试阶段,我们的主要目标是更新支持库和工具,如 Vue Router、Vuex、Vue CLI、Vue DevTools,并确保它们与新版本能够完美兼容。我们还会与社区的库作者合作,帮助他们一起为 3.0 做好准备。
6. RC 阶段
在 API 和代码库稳定之后,我们将冻结 API 并进入 RC 阶段。在这个阶段,我们还将提供“兼容版本”:包含 2.x API 兼容层的 3.0 版本。这个版本还将带有一个标记,可以打开这个标记来禁用有关 2.x API 的警告。兼容版本可作为将应用程序升级到 3.0 的指南。
7. IE 11 构建
在发布最终版本之前的最后一个任务是提供上述的 IE 11 兼容构建版本。
8. 最终发布
说实话,我们也不知道什么时候可以发布最终版本,但很可能会在 2019 年。我们更关心的是能否交付稳定的版本,至于具体的日期可能就不那么重要了。我们有很多工作要做,但对于接下来要发生的事情,我们感到非常兴奋,并拭目以待!
英文原文
https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf
Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved