V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ianva
V2EX  ›  前端开发

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

  •  3
     
  •   ianva ·
    ianva · 2016-07-22 19:18:52 +08:00 · 49847 次点击
    这是一个创建于 3081 天前的主题,其中的信息可能已经有所发展或是发生改变。
    作为用过 angular 1 和 react 开发过很多项目的人来看, vue 的概念上比 angular 1 还多,从 compontent , directive 的概念上来说一个概念就超过一个 react 的概念,组件设计的复杂度上讲也是。
    用过 angular directive 写过很多组件的人来说,用过 react 就觉得 angular 组件设计过渡,项目组件化其实很难,很多概念来的还不如 react 简简单单的概念写的方便
    而 Vue 是延续了很多设计,真搞不懂为啥会有人说 Vue 简单,就是因为有中文文档和 generator ?
    134 条回复    2018-03-31 10:19:11 +08:00
    1  2  
    undozen
        101
    undozen  
       2016-07-23 15:29:50 +08:00
    我觉得 Evan You 可能会看帖笑而不语
    undozen
        102
    undozen  
       2016-07-23 15:30:51 +08:00
    估计 Evan You 会来看帖然后笑而不语
    undozen
        103
    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
        104
    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
        105
    ianva  
    OP
       2016-07-23 18:02:53 +08:00
    @runcelim
    明显没用过, ng1 是 5w , ng2 是 1.4w ,估计你看的是 ng2 的项目
    其实看社区另外一点第三方的支持,这方面 ng 和 react 都是 6.5w+, vue 是 3000 ,差距太大
    另外也不是在讨论那个库或框架更好,我只是想说明 vue 并不是想象的这么简单
    ianva
        106
    ianva  
    OP
       2016-07-23 18:06:45 +08:00
    @undozen
    说的不错,其实易上手和简单是两回事
    react 是个非常简单的理念,需要你有充足的储备,但简单的理念往往能很容易做出复杂规则下很难实现的东西,规则越复杂语法噪音越多,意味着复杂度会增加,问题会增加,很多东西用起来就没有这么的简单
    Vue 有太多框架设定上的语法噪音,而 ng2 吸取了 ng1 的教训解决了很多这方面问题,和 ts 结合的很自然, Vue 就很难这么改进除非也是大改版
    ianva
        107
    ianva  
    OP
       2016-07-23 18:08:12 +08:00
    @coffce404
    怎么得的出这样的结论的,你谈谈为啥 Vue 和 react 至于 ng1 能更相似?
    ianva
        108
    ianva  
    OP
       2016-07-23 18:10:40 +08:00
    @zhuangtongfa
    说话掺杂太多情绪,讨论问题是不必要的, vue 的组件设计就是会让组件化变复杂,我一直是持这种观点的,至于双向绑定和模板我 ng1 一直用的很好,自然是好特性,上手的话如果只谈双向绑定,那确实是简单,但 react 作为模板用的也大有人在,我见多了
    ianva
        109
    ianva  
    OP
       2016-07-23 18:12:32 +08:00
    @loveyu 这填模板的需求和 react render 也无二,何况都能双向绑定
    ianva
        110
    ianva  
    OP
       2016-07-23 18:14:04 +08:00
    @morethansean di 这点你说的是,因为 ng1 最初是没有 commonjs , es6 module 之类的模块维护的自然有 module 和依赖注入的需求
    coffce404
        111
    coffce404  
       2016-07-23 19:08:42 +08:00 via Android
    @ianva
    vue 的组织结构, state 和 prop ,单向数据流等都是在像 react 看齐,甚至 2.0 还加了 jsx 。
    vue 一开始是脱胎于 ng1 ,遗留了一些 ng1 冗余的概念,但后面在版本的逐渐升级中已经找到自己的方向, 2.0 也砍掉了很多没用的设计。
    另外 vue 的核心概念远比 ng1 少,许多概念都能用一个 computed 代替,只是它提供了其他一些备用做法,相当于 computed 的语法糖。真正开发用到的 api 不多
    ianva
        112
    ianva  
    OP
       2016-07-23 19:26:29 +08:00
    @coffce404 vue 的 props 其实类似 angular 的 Isolate scope ,没看到有 state 的概念,其实还是 angular 这些东西,
    细看就会发现比 ng1 的组件还要复杂,多了很多东西, 2.0 看了下,确实是在删 api 但在如此的设计下根本不肯大动,所以 ng2 这么大改版也是无奈,不打破原有的规则就根本没法改进,这方面看不出 vue 新版会有什么改变
    yyx990803
        113
    yyx990803  
       2016-07-24 04:45:17 +08:00   ❤️ 1
    哈哈,有人在推上 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
        114
    klausgao  
       2016-07-24 07:36:27 +08:00 via iPhone
    对于这 3 个框架,估计帖子里的大神都是有用过的。我也是写实际体验,不吹不黑。
    最开始肯定是用 ng1 的, 2 年前吧。只能说半个月后果断放弃,因为 ng 太重,原来 jquery 的东西很多都不能用了,最后实际项目还是回到 jquery 。
    然后到 re ,也是很重,其实我说 jsx 真的好吗?
    后来到 vue ,也是抱着试一试的想法,感觉很轻,至少我之前的 jquery 库不用抛弃了。即使有些 jquery 库很好但是用 vue 没办法用,自己写一个也没什么大不了的。
    发现没有,我一直说 jquery ,说实话,做前端的没办法完全去 jquery 的,而 ng re 都在努力去 jquery , vue 没有,所以我选择了轻的 vue 。
    zzzreg
        115
    zzzreg  
       2016-07-24 13:06:32 +08:00
    Vue 的简单说的是入门简单吧,引个 js 文件就可以用。 api 简洁一致,文档清晰,很快就能出活。改造旧项目也很方便,用了后台模版的项目也可以用。等你熟悉了以后有了更高的需求,做前后端分离,组件化, Vue 也有很好的支持。
    Vue 的学习曲线比较平缓,入门只要知道点 javascript 就行,其他概念可以用到再看。 React 要先理解组件化的思想,还要折腾前端构建,这就要花去新手好多时间, Angular 也有一堆概念要理解以后才能开始写代码。 Vue 也不是不需要这些,只不过这些东西可以等晚点再熟悉,不知道也不影响写个简单的项目。
    ianva
        116
    ianva  
    OP
       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
        117
    ianva  
    OP
       2016-07-25 13:52:14 +08:00
    @zzzreg 对上手上来说学习去曲线是更平缓
    dcoder
        118
    dcoder  
       2016-07-29 02:47:44 +08:00
    @yyx990803 有 API 的分类整理没?哪些是核心的,对梳理和理解有帮助的,哪些是便利型的?
    sillyousu
        119
    sillyousu  
       2016-07-30 14:23:11 +08:00
    @mdluo
    >另外感觉 vue 在国内的蜜汁好评率是不是因为每当中文社区里出现反对声音的时候,老尤就会出来用自己最丰富的 vue.js 使用经验把反对者打败
    有个作者和你 pk 最佳实践,不是很好吗?
    yyx990803
        120
    yyx990803  
       2016-08-05 15:54:31 +08:00
    @ianva 既然你心里的想法跟别人无关,你非要跑这里来开个帖子跟人争什么,自相矛盾还不让人扣帽子,请您继续 high 。。。
    ianva
        121
    ianva  
    OP
       2016-08-05 17:08:37 +08:00
    @yyx990803 有观点还不能开帖讨论了,真是搞笑,以后谈到 vue 还得找你盖个章才能讨论才能出师有名,名正言顺?
    mdluo
        122
    mdluo  
       2016-08-06 15:40:42 +08:00
    @ianva 哈哈哈

    @sillyousu 但是关键就在于很多时候 pk 着就跑题了,就变政治正确,变站队了。比如说这里尤大神也出现了,结果你也看到了
    mingyun
        123
    mingyun  
       2016-08-28 17:32:52 +08:00
    好热闹
    msuperleo
        124
    msuperleo  
       2016-12-09 15:24:15 +08:00
    最近在学 VUE2.0 ,之前把 react+redux+react-redux 倒腾了一遍,不知道算不算得上 react 的全家桶。 我想说,我特别赞同楼主的说法。 如果我是一个刚接触 VUE 的人,可能也会不明白楼主为什么这么说,当学的深入以后真的是越来越有体会, 什么叫 VUE 很简单? 一点都不简单好吗? 还看到楼下有说对 VUE 有偏见,拜托就讨论一个框架的学习成本就叫对 VUE 有偏见了? 你是得有多玻璃心。。。
    VUE 我还没有学完,还在折腾的路上,可真心的:越学的深入觉得越不简单,相比 react 来说。我记得我大学学英语的时候,我们英语老师跟我们说:英语这门语言,正好跟日语相反,英语是入门难,入门以后学起来就简单了,日语恰恰相反,日语是入门简单,可真学起来就难了。我觉得这个比喻对于 VUE 和 react 再合适不过了, VUE 就好比日语,入门确实简单,可学到深入之后,真的觉得是越来越难,还有 VUE 的官方文档,真的想吐槽下,官方文档真的只适合而且仅适合初学,稍微深入一点的东西在官方文档里面都很难找到。再说 react ,入门确实难,对初学者并不算特别友好,我记得当日学习最基础的例子,也会费一点周折,以至于到后来学 VUE 的时候,心里忍不住的说 VUE 就这么简单吗?事实并非如此,入门了 react 之后反而会觉得越往后越简单。至少现在的感觉是这样的,可能当完全学完 VUE 以后又会有另一番感概吧~
    ianva
        125
    ianva  
    OP
       2016-12-11 23:52:10 +08:00
    @msuperleo vue 和 angular 的问题在于,为了解决问题,抽象出一套体系,然后在不断的实践中去增加这个体系的功能和细节添加了很多为了这套体系服务的设施。
    好比一个架空的世界观,既然我定义了一套这个世界的物理定律那么这个体系下的东西都要围绕他而创建,在这个过程中产生了为了解决这个世界设定下的的问题而产生的需求,久而久之越积越多,这就是 angular1 的问题,所以 angular2 的很多特性会回归到基于语言本身

    这就是我要说的复杂,而在这个世界观下的所有的知识也许都是无法迁移的,只有少量的模式可以借鉴到其他地方,这也就是这类框架的真正成本。

    react 也创建了一套体系,但他并没有把这个体系扩大到整个世界,而且引入了很多 FP 的概念,当然也会有成本, FP 的学习确实也是成本,但学习 FP 这个范式本身是学到抽象方法和进入一个新的理念的领域里,这点上作为前端的 FP 的领路来说完全是正向的。

    当然他们本身我不想探究好坏优劣,各有所长
    qdwang
        126
    qdwang  
       2017-02-17 16:04:34 +08:00
    其实用 angular , react , vue 这类东西最大的作用是说服老板涨工资,或者是为下一次跳槽涨工资做准备。。。
    ianva
        127
    ianva  
    OP
       2017-02-17 16:14:37 +08:00
    @qdwang angular , react , vue 这类东西,意味着生产力的提高,意味着更少的人做更多的事,如果整个行业的规模不扩大的情况下,就意味着技术人员的需求会减少,相应的薪酬会提高,与之相对的是用低生产力技术将会被淘汰,或者降低薪酬
    qdwang
        128
    qdwang  
       2017-02-17 17:55:49 +08:00
    @ianva

    生产力的提高, 有科学的对比实验数据证明真的有生产力提高吗?

    其实搞架构,和开中药方子一样。
    根本没有用数学,科学的方式来证明一定能提高生产力,只不过是感觉这样做能解决“问题”而已,最后引出一堆新问题。
    qdwang
        129
    qdwang  
       2017-02-17 17:57:38 +08:00
    有本事倒是可以用形式化的方式来证明这些架构的合理性
    比如用 TLA+来证明他们 spec 设计的合理性。

    不过估计没人做,反正大家不需要。大家只要“感觉”这个方式生产力很高就可以了。
    ianva
        130
    ianva  
    OP
       2017-02-17 18:43:12 +08:00
    @qdwang 如果已经尝试过并应用于具体项目,还意识不到生产力的差距,那也没什么可聊的
    geek123
        131
    geek123  
       2017-10-20 08:25:51 +08:00
    @ianva 我是汇智网的,我们有一些 vue.js 的课程是否可以利用这个帖子,给大家一些福利,发一些优惠券?
    sucaihuo
        132
    sucaihuo  
       2017-10-25 16:51:56 +08:00
    看视频学习吧,15 个 vue 视频教程 http://www.sucaihuo.com/video/56.html
    geek123
        133
    geek123  
       2018-03-12 21:09:58 +08:00
    yist
        134
    yist  
       2018-03-31 10:19:11 +08:00
    为什么总有人引战呢?作为一个程序员,自己喜欢用什么框架就自己用,怎么老是去怼别人呢,无意义地去黑别人,否定别人的劳动成果,要觉得不好用,你可以联系作者提出自己的建议,自己又没有那个水平,你单方面的指指点点有什么用?一看就是没有思想觉悟的程序“猿”,离攻城狮档次还差远了。现在 1 年多过去了,你无脑黑的 vue,越来越好用了呢
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 20:09 · PVG 04:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.