react 和 vue

    作为一个在前端圈子里摸爬滚打快7年的老程序员,经历了从前端技术 原生 -> jquery -> ng -> vue -> react 的的变迁,支持的浏览器也随着业务的不断提升,从支持 *ie6 -> ie8 -> ie10 *.

    现在想来,我从13年开始接触ng框架以来,也算深入使用过所谓的前端三大框架。今天突然想聊聊 react 和 vue 两个框架。

    2016年以来,react/vue两大框架发展都非常迅速,社区成长很快,各种ui框架也层出不穷。现在站在一个使用者的角度,比比这两个框架。

1、社区

    从社区的角度来看,react完爆vue,开发中需要的组件基本到github上一找,可以找出一堆react的相关组件,而对于vue来说,相对的组件就比较少了。比如同样是拖拽组件,github 上drag react的结果比* drag vue *的结果要多出1.5倍(700 :258)的样子。所以,从组件(轮子)的丰富程度来说,react 远胜 vue。

    当然,很多组件不一定能完全满足业务,可能需要包装或者二次开发,但这个确实是react 社区比vue 社区繁荣的一个证据。另外,从google的搜索量上来看,react也比vue要高出两倍以上。

2、入门难度

    无论作为团队管理者还是作为选型的架构师,团队的技术栈和能力,都是一个需要考量的因素,从入门(学习曲线的角度上来看),个人认为,react和vue相当(别急着吐槽,往下看)。

    但是!react 作为view 层的框架,本身使用甚至比vue简单一些,但是如果需要在稍微复杂或者说大型一点的项目里面使用,基本是不够用的,这时候,全家桶就在你面前展示出了绚丽的图景。redux或者mobx或者dva,基本都是往react上不断的叠加概念,刚刚进入的开发者会被虐的死去活来,各种文档,每个一两周是比较难上手的。

    对于vue来说,也存在类似react全家桶的东西,不过,如果只是稍微复杂的项目,使用vue+一些最佳实践基本能cover。

    所以在这一方面来说,我认为vue还有很有优势的。

3、开发体验和代码维护

    对于一个老码农来说,开发体验绝对是很值得关心的,从我的角度上来说,维护react和维护vue代码的成本相当。这得从两个框架的出发点说起。

    对于vue,出发点是html模板,对于没有太接触过后端的前端开发来说,可能是一个蛮好体验,通过html模板,可以很清晰的看到整个页面的结构。但是,vue会把业务逻辑的复杂度用html的复杂度来消化掉,如果设计的不好,一堆的 v-if,v-for 看起来也是蛮痛苦的事情。

    对于react,触发点的是js代码,一切都是js生成的,对于懂得设计模式或者有后端开发经验并转入前端的开发,会更友好一些。同样的,react吧相关的业务复杂度整合到js代码的复杂度中来,如果开发水平一般,或者没有遵从一些最佳实践,很可能写出一团shit。

    所以,就个人看来,react比vue对开发人员的水平要求高一些,vue更亲民一些。但反过来说,vue写出来的代码也更不可控。所以,对于维护两个框架产出的代码来说,如果人的素质可以,react比vue更优一些,反之vue比react好。

4、文档

    总的来说react的全家桶文档比vue的文档难看,vue有优秀的文档体系,虽然react也有,但是用react的话,你可能还要参考,react-redux或者其他各个用到的全家桶成员的文档。而且,vue升级时的破坏性也没那么强,比如vue1 -> vue2 提供了蛮好的升级指引。

    反观react,虽然项目本身提供了指引。但是很多相关库升级的时候,指引就很少了。

    所以,从文档的角度来说,vue还是要优于react的。

    总之,两大框架各有优劣,能够根据需要选型和使用才是正确的看法。不要被知乎上的口水战左右~~

Table of Contents