今天
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
給大家:
只有存在有競爭力的對手的時候,才能夠發展的越來好。