这几天国外关于 Vue 新 API 的一些争论

本文只是翻译 :) 掘金的排版比知乎好太多了。vue

首先是 Reddit 上有人发帖。git

标题:Vue 3 将大变——目前的语法会被弃用,组合函数将最终做为建立组件的惟一方式github

内容:编程

尤雨溪几天前发布了一篇 RFC(意见征求稿),介绍了 Vue 3 里基于函数的 API。
许多咱们正在使用的特性都会被弃用,诸如 data、computed、methods、watch、mixin、extends 和生命周期函数。Vue 组件主要由一个叫作 setup() 的函数构成,这个函数会返回全部的 method、计算属性和监听器。api

若是你想继续使用旧版功能,Vue 会提供一个兼容版本。ide

文章里还说:函数式编程

新的 API 和 2.x 的 API 理论上彻底兼容(只是多了一个 setup()选项) 。可是,新 API 的引入实际上会让至关一部分的旧选项长远来讲变得没有必要。若是可以去掉对这些旧选项的支持,能够得到至关的代码尺寸和性能提高。函数

所以,3.0 咱们计划提供两个不一样的版本:
兼容版本:同时支持新 API 和 2.x 的全部选项;
标准版本:只支持新 API 和部分 2.x 选项。post

更新:
他们澄清说旧版 API 将会和 Vue 3.x 共存。Vue 4.x 会不会删掉旧版 API 就不肯定了
看起来尤雨溪读了网上了评论,他声称个人这篇帖子是不许确的,与此同时他却把原文的措辞修改了。以前的「兼容版本」被改成「标准版本」,以前的「标准版本」被改成「轻量版本」
你能读你们的评论而且听取你们的意见,这很好。可是你不该该改写你的文章,而后说我误解你了。性能


后续,Vue 团队在 hacker news 上发了一篇回应,翻译以下:

我是 Vue 的团队领导。
相关的帖子里有不少误解,因此咱们须要澄清一下:

  • 新的 API 彻底是额外加到 Vue 2.x 里的,不会有任何 break change。
  • Vue 3.0 会有一个标准版本,包含新 API 和旧 API,同时会额外提供一个轻量版本,这个版本会删除一些旧 API,以使 Vue 更小更快。
  • 这只是一个「意见征求稿」,全部 API 都没有盖棺定论。你能够留下本身的建议,咱们并非立刻就会发布 Vue 3.0。
    更多详情请看这里:vuejs/rfcs

回应文完,接下来是这篇文章下面的评论。

lwansbrough 评论到:

尤你好,虽然新 API 的提案澄清了这些变化被定为Vue 3 的可选项,但 Vue 团队的长期重点尚不清楚,新 API 看起来就像是为 Vue 4 设置的诱饵。

问题的关键在于:当 Vue 2 发布时,咱们以为 Vue 2 的设计相比于 React 足够简洁,因此上了 Vue 2 的车。而当时 React 的重点主要是函数式和基于性能的UI开发方法(现现在 React 依然在关注这些)。

若是你有一个超级专一于性能,并不是常喜欢函数式的团队,React是更好的选择。 Facebook 也会继续大力投资于性能改进。新 API 里大家也很是关心性能,这很好,我很欣赏这一点,但大家这样作会违背了另外一波人的想法。

性能不是 Vue 的卖点,函数式编程也不是 Vue 的卖点,这个 RFC 里提到的其余奇奇怪怪的东西都不是 Vue 的卖点。没有人会看着 Vue 说「哇,在渲染某个测试组件 1000 次的时候,Vue 比 React 快了整整两毫秒耶!」

采用 Vue 的人是什么人?是哪些对 React 表现出的复杂性不满的人。而如今,Vue 团队却告诉我「React 的方法更高级,适合高级用户」。坦白讲,这是一种冒犯。咱们早就预测了 React 带来的复杂性不值得咱们的团队去尝试,或者咱们已经在用 React 的过程当中遇到了问题,因此咱们才选 Vue,由于 Vue 搞定了这些问题并且能作到和 React 同样高效。

如何才能在 React 的地盘战胜 React?Vue 3 彷佛给出了答案(译注:答案就是模仿 React)。恭喜大家 Vue 团队战胜了 React(译注:我猜这里的意思是尤雨溪说 Vue 的新 API 跟 React 类似可是性能更好),可是咱们等的不是这个答案。这不是咱们想要向咱们的团队、咱们的老板、咱们的利益相关者给出的答案。

我想问你一个问题:我该如何管理个人代码?长期方案应该是重写我应用里全部的代码(在 Vue 3 存在的时间里),而后我就回到了原点,那个我放弃 React 转向 Vue 2 的原点。你以为要求你的用户这样作是公平的吗?你肯定这就是大家想要的结果吗?

尤雨溪回应道:

首先,新 API 跟性能关系不大,Vue 3 的性能提高主要来源于新的模板编译策略。
其次,我以为你把问题简化成新 API 会带来复杂性有点不合适。这份 RFC 很难理解,由于里面的信息量太大了。实际上你能够看看这个例子,你极可能就会了解新的 API 并不会带来新的复杂性:gist.github.com/yyx9908
Vue 有大量的用户,老实讲我不太理解为何新增一批 API 会是一种冒犯。由于咱们清楚地了解到新的 API 在某些状况下会更优雅,也许你尚未遇到这些状况(我不是说你目前的需求比较低端)。咱们在应对不一样的应用,因此这些状况咱们都要考虑。相反,若是你认为 Vue 永远不会遇到一个复杂到必须使用这些新 API 的需求,那才是一种冒犯。
最后回答你的问题:只要你愿意,你能够一直使用旧 API。只要社区认为旧 API 有必要保留,咱们就会一直保留。咱们不会强迫你用新 API。

另外一我的评论到:

我只想说 RFC 有一个重大的变化,以前写的是「标准版」和「兼容版」,标准版不支持 data / computed / methods / watch / provide / inject / mixins / extends 和全部声明周期。
RFC 更新以后,以前的「兼容版」变成了「标准版」,而以前的「标准版」变成了「轻量版」。

dessant 说:

「兼容版」这个词说明了 Vue 团队对旧 API 的态度。兼容对我来讲意味着过期的。

boubiyeah 说:

我不知道为何尤雨溪不能在这两个版本的命名问题上更坦率一点。
为何尤就不能直接说「我在版本命名和对将来的计划上有些问题,社区的反应让我知道我应该修改一下措辞」。
相反,他说的是:「你在说什么?我一直都是这样想的呀」。

gustojs 说:

这可能有一部分是个人错。尤雨溪主要关注点在技术层面,而个人关注点在社区方面。咱们没有意识到版本命名带来的潜在问题。


最后,就在6小时前,尤雨溪发了一篇推文:

Earlier today I was really itching to write a dedicated blog post for those who did not and still refuse to actually read the RFC, but it's my wife's birthday so I'll do it tomorrow.
前些天我很是想要写一篇专门的文章给那些至今尚未读过 RFC 的人看,可是今天是我老婆的生日,因此我会明天写这篇文章。


补充:中文版 RFC 并无更新

完。

相关文章
相关标签/搜索