Vue 3.0 彻底跑偏了

2019-06-23 21:59:37 +08:00
 plqws
关联文章: https://zhuanlan.zhihu.com/p/68477600

Vue 3.0 的想法是引入灵感来自于 React Hook 的 Function-based API,作为主要的组件声明方式。

意思就是所有组件的初始状态、computed、watch、methods 都要在一个叫做 setup 的方法中定义,抛弃(暂时会继续兼容)原有的基于对象的组件声明方式。

Reddit、HN 相关的讨论帖,包括这个 RFC PR 的本身,都有大量强烈的反对的声音,然而目前 Vue 的核心团队似乎并不认为这个改变可能是一个错误,而是在努力说服大家接受这个改变。

(个人认为如果这个改变实装到 Vue 3.0,也许不会带来太大的影响,但是如果在 Vue 4.0 中彻底废弃原有的组件声明方式,Vue 相当于自杀了。)
26764 次点击
所在节点    Vue.js
101 条回复
oukichi
2019-06-24 10:38:46 +08:00
@hoosin medium 有篇文章分析报告称,react 占 70%,angular 占 27%,vue 占 3%。也许这是老美的统计,但是可见一斑啊。
sodatea
2019-06-24 10:40:13 +08:00
> 在 Vue 4.0 中彻底废弃原有的组件声明方式

不会的,如果到时候用旧的声明方式的人足够多,肯定不会从核心移除。
即使用的人不多了,也不会抛弃,最多是从核心仓库移到单独的包里。(就像 React 对 createClass 和 PropTypes 做的那样)
notreami
2019-06-24 10:46:52 +08:00
@jinliming2 啥,一个 js 库,跟一门编程语言类比??
SEARCHINGFREE
2019-06-24 10:48:17 +08:00
开发者可以不跟风的,又不是必需品
neoblackcap
2019-06-24 10:50:31 +08:00
Facebook 里面一群搞 FP 的,他们不喜欢 OOP 我可以理解。Vue 是本身就是面向普罗大众的,现在这样改,让我有种 FP 这样的思想已经成了业界主流了。是我落伍了?
duan602728596
2019-06-24 10:50:43 +08:00
对于 react hooks,是真香。所以对于 vue3 还是很期待的
love
2019-06-24 11:00:10 +08:00
@neoblackcap 先看看 RFC 是啥,Vue 的 hooks 根本不是象 react 那样的函数式,本质只是借了 react hooks 的精华而已,函数只 setup 一次,并不会重复运行,反而避免了 react hooks 的缺点,在我看来是更先进了。
love
2019-06-24 11:06:35 +08:00
@ericgui 你这想法对于需要大人力大投入的复杂工程来说是成立的,但对于实现难度小基本是思想占大头的项目来说人多不意味先进,它只取决于最聪明那人,小团队反而更有优势
gzf6
2019-06-24 11:13:18 +08:00
搞 ng 的估计得跑国外找工作了,国内一水的 react 和 vue
justin2018
2019-06-24 11:20:10 +08:00
我老了 前端真的跟不动了~
mogutouer
2019-06-24 11:24:00 +08:00
感觉还可以,原生特性很好,想我们这种做小程序,用二道贩子( mpvue,megalo )的才难跟
momocraft
2019-06-24 11:24:39 +08:00
抛弃基本盘(我猜测有不小的比例是学个框架就好风凭借力的)对框架不一定好
Ixizi
2019-06-24 11:25:14 +08:00
真香预警
599316527
2019-06-24 12:12:01 +08:00
那还不如像 svelte 那样搞得彻底点,还要包层 setup() 不伦不类的
impl
2019-06-24 12:29:33 +08:00
可以用 svelte,svelte 没有 hook。
laogui
2019-06-24 12:29:39 +08:00
站在用户角度不敢轻易对框架的核心变化指手画脚,使用者和核心开发者所思考的不是一个东西。作为用户,要么积极跟随变化,要么就换别的。
shenqi
2019-06-24 12:31:17 +08:00
react 真香啊。三大框架里面,就 react 框架入门成本及发展延续成本最低,所以,真香。
xiaojie668329
2019-06-24 13:04:28 +08:00
每次都有人拿 vue 是个人作品来黑,说 react 是巨型团队的那个,去了解一下 react 的核心团队有几个人再来黑吧。。利益相关:工作大量使用 vue,个人喜欢用 react。
plqws
2019-06-24 13:10:45 +08:00
我自己本身在大量的项目上使用 Vue,所以更能理解 Vue 之所以吸引人的地方。

- 我要实现某个逻辑,通常只有一种方法,马上就能开工。但是 Vue 3.0 还是之后的版本,则会让人纠结到底要用传统的 API 还是新 API,这个选择的过程就很使人难受,也是一个框架最不应该出现的问题。

- 代码组织轻松,即便是千人万人的团队,写出来的代码基本都差不多。因为基于对象(或者 Options )的组件声明,把组件不同逻辑的编写方法和位置都约束起来了,而基于函数的声明方法给了开发者更大的自由,也产生了更大的不确定性。同时也降低了可读性(开发者需要在 setup() 里到处寻找 value 在哪里,methods 在哪里,分辨哪些是 computed,某个叫做 isEnabled 的字段到底是 value 还是 computed )。

- 基于上面这些优点,随之带来的就是极低的上手门槛,不需要多熟悉 js 的语法糖或者未来特性,就能用 Vue 进行生产。然而在失去上面这些优势后,很难说 Vue 再会是一个亲民友好的框架了,而更像是一个被 React 社区不断影响干扰,而迷失了自我的失败品。

学习曲线陡峭度的提高、代码的可读性的降低、可能会出现的旧 API 被废弃导致的迁移成本,这些都是很可怕的问题。

而且基于函数的 API 的引入,这个改变太过巨大,在某种意义上可以认为这是一个新的框架了。所以为何 Vue 团队不考虑学习一下 Express 与 Koa,从 Vue 中分离出一个新的框架,从而服务那些真正需要这些新特性的高阶用户。毕竟某种意义上,引入这个新的 API,基本上所有现存的插件都要重写,这一点和 Koa 对于 Express 的改变来说,还是很相似的。
wszgrcy
2019-06-24 13:40:19 +08:00
@gzf6 啊啊啊啊啊,虽然你说了试试,但确实挺令人伤心的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/576714

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX