今天
Vue
Star突破了100K
,正式超越React
。
从我写文章开始就记录这个曲线图,可以看到Vue
仅有微弱优势,目前战况激烈,直接看图:
图片摘自 https://hubble.js.org/react-vs-vue/
前端框架的演进越来越激烈,越来越快,以至于出现了求不要更新了,老子学不动了
long long ago,大家写还在写vanilla .js
,那个号称压缩有0KB,兼容所有浏览器性能又极佳的框架,我笑而不语,因为其实也偷偷的用过好多次vanilla.js
。
之后浏览器大战,各种浏览器的API兼容成了头痛的问题,jQuery
从众多框架中脱颖而出,统治了前端行业将近10年,要说历史意义,我认为目前没有任何框架超过jQuery
。就像智能手机一样,现在出了很多功能酷炫的智能手机,我还是认为没有智能手机在历史意义上超过iPhone 4
。
再之后,Backbone
出现了,类MVC
的思想框架越来越来多,都在解决这大型应用分层,去解耦不同功能的逻辑问题,但是随着业务逻辑越来越复杂,同步Model
的数据到View
这件事情变得越来越繁琐。
AngularJS
解决了Model
到View
同步的繁琐问题,脏检查名字不好听,用起来却很好用,双向绑定的概念开始在前端普及开来,同时来带来了很多的黑科技,它的能力和学习曲线的陡峭一样出名,老一辈人都在说,你学会了它,就会给你打开新世界的大门。
React
一出生就含着金钥匙,因为Facebook
本身就在大规模使用,在许可证风波之前大家都对这个框架很放心,同时引出单项数据流的概念。使用React
没有复杂,但是它只处理了View
层,而数据层、路由层等等都是不提供的,并且大多数情况还要和Webpack
一起使用,还没有结束,你要写一个项目还需要Redux
,从此有了React
全家桶这种搞笑的说法,对,使用React
并不难,你想玩转React
全家桶,可就没那么简单了。
Vue
,也就是今天的主角,其实是一个备受争议的框架,因为被批判到所有的功能都是抄袭的,双向绑定抄抄Angular
,虚拟DOM抄抄React
之类的。其实好多人不知道双向绑定和虚拟DOM也不是Angular
和React
最先提出来的,比如双向数据绑定是由微软的WPF提出来的,我大学的时候需要写个Windows
下的小工具,不记得是什么原因我选了WPF
,就是一个一百多行的小程序,当时只是觉得挺好理解的,没学过C#
也能照猫画虎写出来,改了变量界面就变了很方便,从事前端后才知道这是MVVM,提出双向数据绑定的鼻祖。
最近在公司换了一个新部门,前部门是主React
技术栈的,现在新部门统一技术栈为Vue
。在之前的部门简单写过一点Vue
,个人觉得Vue
确实比React
方便点,上手成本也会低一些。从开发者角度来讲,Vue
比React
多做了一点事情,比如v-model
,其实v-model
很简单就几行代码,但是Vue
会在自己的框架层去实现,而不是让开发者自己做这件事。记得当时初学React
的我还在思考为什么要有受控组件
和非受控组件
这种设计,因为input
的value
绑定了state
之后,封装完input
组件的我发现,无论怎么拼命敲键盘,我的input
都不会再动了。以后再遇到这种情况,还是不要拼命敲键盘的好。
但是,大家都知道,往往但是很重要,我觉得在生态上,React
依然是领先的,比如Ant Design
用起来简直不要太爽。而且React
居功至伟,像Webpack
、Babel
等等好多前端的基础建设工具,都是React
全家桶那一波带起来的,将前端的工程化普及大众。
不过,大家也知道,往往不过也很重要,对于初学者来讲,学习Vue
一定是容易的多,而且Vue
用vue-cli
解决了Vue
全家桶配置复杂的问题,vue-cli
改改就能在生产环境中使用了,正是由于Vue
易用度更高的原因,国内大批量小公司在使用,大公司也会因为易用度问题大规模使用,使Vue
的增速特别快,超过了React
。
其实我自己对React
出现以前的技术使用并不多,我入行前端的时候,就在实习的时候写过几百行的Backbone
老项目,不过后来那个项目用React
重构了,也没有管过特别低版本的浏览器,自然jQuery
也是无法熟练使用的,需要看API文档写jQuery
那种。那时候是React
、Vue
、Angular
三国演义,现在已经变成了React
、Vue
的两极争霸,到底谁最后能够一超多强,还说不好,没准会是从其他工程角度另辟蹊径的一个框架吧,毕竟目前Model
=> View
的这种模式中的Model
层写起来依然有点麻烦,因为Model
层总会存在异步处理问题。
其实写了这些,就是纪念一下,不想挑起来阵营的冲突啊,自己比较中立,对使用React
、Vue
偏向不太大,借用尤大的一条twitter
给大家:
只有存在有竞争力的对手的时候,才能够发展的越来好。