为什么会有人说 Vue.js 简单?

2016-07-22 19:18:52 +08:00
 ianva
作为用过 angular 1 和 react 开发过很多项目的人来看, vue 的概念上比 angular 1 还多,从 compontent , directive 的概念上来说一个概念就超过一个 react 的概念,组件设计的复杂度上讲也是。
用过 angular directive 写过很多组件的人来说,用过 react 就觉得 angular 组件设计过渡,项目组件化其实很难,很多概念来的还不如 react 简简单单的概念写的方便
而 Vue 是延续了很多设计,真搞不懂为啥会有人说 Vue 简单,就是因为有中文文档和 generator ?
49830 次点击
所在节点    前端开发
134 条回复
undozen
2016-07-23 15:29:50 +08:00
我觉得 Evan You 可能会看帖笑而不语
undozen
2016-07-23 15:30:51 +08:00
估计 Evan You 会来看帖然后笑而不语
undozen
2016-07-23 15:43:05 +08:00
翻页有问题, 不小心回复两遍了. 不好意思.

前两天 Evan You 在推上莫名其妙来了一句 "Life is short, easy is underrated" 还挺多人赞的, 我之后看到他的某个知乎回答才知道原来是回应 React 社区的 "React is not easy, but it is simple..." 这句话

就这里提醒大家中文的 "简单" 对应的英文 "easy" 和 "simple" 这两个词, 楼主在说的是 "simple", 而持不同意见的人主要是在说 "easy"

那个知乎答案链接: https://www.zhihu.com/question/47161776/answer/111370024
runcelim
2016-07-23 17:08:19 +08:00
我从社区上说下,楼主请找到 vue, reactjs 和 anglur 的 正确 github 地址,截止目前
ReactJs : star 4.5w , issues 501 ;
angular : star 1.6w, issues 1213;
vue : star 2.3w, issues 22
ianva
2016-07-23 18:02:53 +08:00
@runcelim
明显没用过, ng1 是 5w , ng2 是 1.4w ,估计你看的是 ng2 的项目
其实看社区另外一点第三方的支持,这方面 ng 和 react 都是 6.5w+, vue 是 3000 ,差距太大
另外也不是在讨论那个库或框架更好,我只是想说明 vue 并不是想象的这么简单
ianva
2016-07-23 18:06:45 +08:00
@undozen
说的不错,其实易上手和简单是两回事
react 是个非常简单的理念,需要你有充足的储备,但简单的理念往往能很容易做出复杂规则下很难实现的东西,规则越复杂语法噪音越多,意味着复杂度会增加,问题会增加,很多东西用起来就没有这么的简单
Vue 有太多框架设定上的语法噪音,而 ng2 吸取了 ng1 的教训解决了很多这方面问题,和 ts 结合的很自然, Vue 就很难这么改进除非也是大改版
ianva
2016-07-23 18:08:12 +08:00
@coffce404
怎么得的出这样的结论的,你谈谈为啥 Vue 和 react 至于 ng1 能更相似?
ianva
2016-07-23 18:10:40 +08:00
@zhuangtongfa
说话掺杂太多情绪,讨论问题是不必要的, vue 的组件设计就是会让组件化变复杂,我一直是持这种观点的,至于双向绑定和模板我 ng1 一直用的很好,自然是好特性,上手的话如果只谈双向绑定,那确实是简单,但 react 作为模板用的也大有人在,我见多了
ianva
2016-07-23 18:12:32 +08:00
@loveyu 这填模板的需求和 react render 也无二,何况都能双向绑定
ianva
2016-07-23 18:14:04 +08:00
@morethansean di 这点你说的是,因为 ng1 最初是没有 commonjs , es6 module 之类的模块维护的自然有 module 和依赖注入的需求
coffce404
2016-07-23 19:08:42 +08:00
@ianva
vue 的组织结构, state 和 prop ,单向数据流等都是在像 react 看齐,甚至 2.0 还加了 jsx 。
vue 一开始是脱胎于 ng1 ,遗留了一些 ng1 冗余的概念,但后面在版本的逐渐升级中已经找到自己的方向, 2.0 也砍掉了很多没用的设计。
另外 vue 的核心概念远比 ng1 少,许多概念都能用一个 computed 代替,只是它提供了其他一些备用做法,相当于 computed 的语法糖。真正开发用到的 api 不多
ianva
2016-07-23 19:26:29 +08:00
@coffce404 vue 的 props 其实类似 angular 的 Isolate scope ,没看到有 state 的概念,其实还是 angular 这些东西,
细看就会发现比 ng1 的组件还要复杂,多了很多东西, 2.0 看了下,确实是在删 api 但在如此的设计下根本不肯大动,所以 ng2 这么大改版也是无奈,不打破原有的规则就根本没法改进,这方面看不出 vue 新版会有什么改变
yyx990803
2016-07-24 04:45:17 +08:00
哈哈,有人在推上 at 了我,只能来说两句了。

简单不简单,分两方面看(这里暂时只讨论 Vue 1.x ):

1. 实际生产力:从 0 开始用这个框架实现特定需求,需要多少时间 /精力;
2. API 设计

我们先看 (1),这里有现身说法的用户也有好几个了,事实就是很多人确实用 Vue 开发东西很高效,看完文档就可以刷刷的出活,这跟 API 臃肿不臃肿没有直接关系,你否认也没有用。

如果打个粗略的比方, Vue 在 80% 的情况下(常见中小型应用)实际生产力会超过 React ,剩下 20% 比如超大规模应用 / 特殊需求应用, React 的可扩展性更好。这其实是一个有意识的选择,两个框架所针对的目标场景 /用户群体本来就是有微妙区别的。

再说说 (2),楼主的主要论点是 Vue 的 API 设计得臃肿,不如 React 简单。其实核心 API 不如 React 简洁我也不否认,但是你要说不比 ng1/ng2 简单我只能..... 呵呵。回到和 React 的对比,其实 Vue API 的『多』有很多属于『便利型 API 』,也就是并不是必须存在,可以用更基础的功能去实现的 API ,类似语言中的语法糖。因为用户经常要用到,所以做成了内置的 API 。 React 核心确实简洁,但是其实把大量的工作丢给了用户自己,当你把一个完整的应用写出来的时候你自己所处理的复杂度其实远大于框架本身的复杂度。这一点其实双方也是有意识的选择, Vue 选择帮用户多解决一些常见问题,而 React 则选择只提供最基本的东西,尽可能让用户自己实现上层功能。我并不觉得这两个选择有绝对的孰优孰劣,更多的是针对用户和框架本身的定位所做的取舍。

事实上,我并不否认 1.0 的很多 API 并不是很有必要,所以在 2.0 里面进行了进一步的精简。 directive 在 2.0 里面已经完全淡化了, props 也只有单向的了。至于核心的组件格式,我觉得 Vue 的组件已经是非常简单的了,你说得好像 Vue 的组件设计有什么本质的 flaw 一样,但我好像没看见什么有力的论点。

最后楼主还是得认识到一个问题,使用的感受不是靠说的。人家用着觉得挺简单你非要告诉人家这其实不简单,就好像人家喜欢吃一样东西,但你不喜欢,你非要说服别人这个东西其实并不好吃,愚蠢而徒劳。
klausgao
2016-07-24 07:36:27 +08:00
对于这 3 个框架,估计帖子里的大神都是有用过的。我也是写实际体验,不吹不黑。
最开始肯定是用 ng1 的, 2 年前吧。只能说半个月后果断放弃,因为 ng 太重,原来 jquery 的东西很多都不能用了,最后实际项目还是回到 jquery 。
然后到 re ,也是很重,其实我说 jsx 真的好吗?
后来到 vue ,也是抱着试一试的想法,感觉很轻,至少我之前的 jquery 库不用抛弃了。即使有些 jquery 库很好但是用 vue 没办法用,自己写一个也没什么大不了的。
发现没有,我一直说 jquery ,说实话,做前端的没办法完全去 jquery 的,而 ng re 都在努力去 jquery , vue 没有,所以我选择了轻的 vue 。
zzzreg
2016-07-24 13:06:32 +08:00
Vue 的简单说的是入门简单吧,引个 js 文件就可以用。 api 简洁一致,文档清晰,很快就能出活。改造旧项目也很方便,用了后台模版的项目也可以用。等你熟悉了以后有了更高的需求,做前后端分离,组件化, Vue 也有很好的支持。
Vue 的学习曲线比较平缓,入门只要知道点 javascript 就行,其他概念可以用到再看。 React 要先理解组件化的思想,还要折腾前端构建,这就要花去新手好多时间, Angular 也有一堆概念要理解以后才能开始写代码。 Vue 也不是不需要这些,只不过这些东西可以等晚点再熟悉,不知道也不影响写个简单的项目。
ianva
2016-07-25 13:48:55 +08:00
@yyx990803
看似便利的 api 其实很多时候到是枷锁,用 ng1 的时候很多时候都会往怎么用,然后查文档,来来回回,成本很高,挺容易忘,之前一直以为确实是需要这样的 api 才能做到一些事情,但后来发现其实并不是这样,另外做一件事情的成本越高的时候需要了解跟多规则的时候其实就不会想去做这事了,用 react 去组件化项目成本低了很多,规则不多,但效果确超乎想想

比如 ng1 里的模板中的表达式,是写了个 parser 做这件事的,并不是基于 js 原有语法, vue 不清楚,但相应的也少了向 react 这样用 FP 的灵活性,效果上其实并不见得好
关于 directive 上 ng1 确实做的很差, ng2 会吧 directive 分 3 类,也显得繁杂,很多时候因为 directve 也会带来复杂度,比如 priority 这类东西,犹如 css 里 z-index 大规模应用的是时候你总会考虑如何分配,脑子里都有根弦

我对 vue 简单有疑问的原因就是曾经用 ng1 的时候觉得规则毕竟是语法糖,能改善很多东西, api 多有利有弊, react 用过断时间后觉得,不是有利有弊的问题,没有这些规则的情况下,其实更容易写一些东西,语法糖式的 api 其实只是一个方向上的思路一直走下去了,其实很简单的规则就能让这些东西跑的通

我不觉得 vue 里面很多东西是比要的,可有可无的情况下为什么有存在?当然这又类似与 ruby 和 python 的理念差异。

另外不要给人扣帽子,很多时候的想法是自己心里生出的,我是觉得 vue 的很多东西不必要,并比简单,至于谁用什么框架与我何关,又无利益关系
ianva
2016-07-25 13:52:14 +08:00
@zzzreg 对上手上来说学习去曲线是更平缓
dcoder
2016-07-29 02:47:44 +08:00
@yyx990803 有 API 的分类整理没?哪些是核心的,对梳理和理解有帮助的,哪些是便利型的?
sillyousu
2016-07-30 14:23:11 +08:00
@mdluo
>另外感觉 vue 在国内的蜜汁好评率是不是因为每当中文社区里出现反对声音的时候,老尤就会出来用自己最丰富的 vue.js 使用经验把反对者打败
有个作者和你 pk 最佳实践,不是很好吗?
yyx990803
2016-08-05 15:54:31 +08:00
@ianva 既然你心里的想法跟别人无关,你非要跑这里来开个帖子跟人争什么,自相矛盾还不让人扣帽子,请您继续 high 。。。

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

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

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

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

© 2021 V2EX