@
plqws > 则会让人纠结到底要用传统的 API 还是新 API
一般肯定是建议新代码新用法,老代码老用法。跟 React 生态的演进也没什么区别
> 开发者需要在 setup() 里到处寻找 value 在哪里,methods 在哪里,分辨哪些是 computed,某个叫做 isEnabled 的字段到底是 value 还是 computed
我不是太理解为什么需要区分 value 和 computed。
不过 value / computed 和 methods 的区分我觉得是可能会做出改进的(当前的 RFC 仍然是设计中的版本,不是最终版本,有新的好想法或好意见肯定会继续调整的)
> 可能会出现的旧 API 被废弃导致的迁移成本
RFC 里刚开始用了 deprecation 这个词,应该算是 Vue 团队信息传达时的一个失误,让普通用户被吓到了。
事实上,这个成本无限接近于零。
1. 因为 setup 写法是一个比较底层 /基础的实现,基于这上面提供旧 API 的兼容版本,不过是需要用户改一个 webpack alias,或者引入一个新的库而已(参考 create-react-class
https://reactjs.org/docs/react-without-es6.html ),而维护这个兼容库的成本非常低
2. 另外因为 function API 的灵活性,其实这个代码可以低成本自动化转换(并且不丧失可读性)。Akryum 昨天差不多一天时间就写出了这样一个在线工具:
https://suspicious-mclean-0e54c3.netlify.com/> 不需要多熟悉 js 的语法糖或者未来特性,就能用 Vue 进行生产
函数也是非常基础的 JS 语法,而且去掉了魔改 this,应该说门槛更低了……
> 某种意义上,引入这个新的 API,基本上所有现存的插件都要重写
不,跟 React Hooks 相似,这只是提供了新的**底层**能力,现存插件完全可以不重写,只是说,新的底层能力让插件作者有可能设计出新的 API 用法。