React、Vue 、 Angular 共分天下,2018首將會是誰?
要論 2017 年最主流的三個 Web 前端結(jié)構(gòu),應(yīng)莫過于 Angular、Vue 和 React 了。然而在實(shí)際運(yùn)用中,這三個結(jié)構(gòu)卻不盡相同,對于規(guī)模不大的前端項(xiàng)目來說,Vue 因其極易上手會被列出***之位,Angular 在快速開發(fā)大型 Web 項(xiàng)目上很受推崇,但仍存許多缺點(diǎn),React 正為 JavaScript 運(yùn)用開發(fā)者供給新的開發(fā)方式。因此,面對各有千秋的開發(fā)結(jié)構(gòu),作為一名開發(fā)者該怎么挑選?哪種結(jié)構(gòu)更具有前景?
接下來,本文作者經(jīng)過近來***發(fā)布的 JavaScript 調(diào)查報(bào)告,深度分析前端結(jié)構(gòu)的盛行趨勢及未來發(fā)展,希望給許多前端開發(fā)者指明一些方向。
Stateofjs 2017 前端結(jié)構(gòu)調(diào)查成果
與日常一樣,運(yùn)用 JavaScript 編程言語的核心區(qū)別是由前端結(jié)構(gòu)引起的。從調(diào)查報(bào)告來看,比較 Angular 和 Vue, React 是 2017 年的主要 JavaScript 結(jié)構(gòu),尤其是 React Native 以史無前例的速度提高自己。同時由于 Angular 的盛行度下滑,Vue 也遭到越來越多的歡迎。
相較于 Stateofjs 發(fā)布的 2016 年前端結(jié)構(gòu)調(diào)查成果:
基于以上,經(jīng)過將 2017 與 2016 年的統(tǒng)計(jì)成果進(jìn)行對比能夠發(fā)現(xiàn),在曩昔一年里 Vue.js 是大家最想學(xué)習(xí)的結(jié)構(gòu),因此我個人猜測下一年將是 Vue.js 成功的一年,當(dāng)然 React 增長很安穩(wěn),而 Angular 將無法跟上這兩個對手的腳步。2016 年時,Vue.js 被稱為“另一個 JS 結(jié)構(gòu)”,其時它是一匹十足的黑馬,而 React 占有主導(dǎo)地位,Angular 則是開發(fā)者的第二挑選。
可是,Vue.js 只會在 Web 前端中占有主導(dǎo)地位,而不會控制一切的前端范疇。React 則能夠在一切的前端范疇中盛行。這是為什么呢?下面,我們將揭開謎底。
React 控制前端范疇的要害因素
答案就在 Stateofjs.com 發(fā)布的 2017 年移動和桌面運(yùn)用前端結(jié)構(gòu)的調(diào)查成果之中:
Synergy 是 React 能夠控制一切前端范疇的要害。
React Native
Vue.js 未能供給代替 React Native 的可行性方案(Weex 和 Quasar 太年輕,存在碎片化而且很軟弱),伴隨著 React Native 和 React.js 的爆發(fā)式增長,如果你掌握了 Web 前端的 React 和 Redux ,你將取得極大優(yōu)勢:只要你想,便可在幾周內(nèi)熟練地將 React Native 運(yùn)用到移動端。在這一點(diǎn)上,React 充沛展現(xiàn)了它比較 Cordova 和其他 Hybrid 技能的優(yōu)勢。
現(xiàn)在最火熱的前端需求在于移動端,而不再是 Web 。React Native 非常成功,同時它也會帶動 React.js 的發(fā)展。
運(yùn)用 Java 和 Swift / Objective C 別離開發(fā)不同渠道的 App 雖然沒錯,可是從商業(yè)的角度來看,它的代價是很高的,此外,與 React Native Codepush 比較,想要經(jīng)過 App Store 的審核也不是那么容易的。
GraphQL
GraphQL 是 Facebook 的另一個重量級產(chǎn)品,它讓 React 生態(tài)系統(tǒng)如虎添翼。
雖然它當(dāng)前還不老練,比較復(fù)雜 而且有缺點(diǎn),可是看起來 GraphQL 在未來將有很大可能代替 REST。
GraphQL 標(biāo)志著前端范疇大多數(shù)的創(chuàng)新都發(fā)生在 React 圈,然后這些創(chuàng)新再在其他結(jié)構(gòu)中被采用和改進(jìn)。
Angular 的未來猜測
Stackoverflow 展現(xiàn)了一個有關(guān)前端開發(fā)人員問題的有趣圖表:
Angular 在這張圖中看起來很好,但我不并以為這預(yù)示著 Angular 作為一個結(jié)構(gòu)能夠取得長期成功。在我看來,對于那些保護(hù)傳統(tǒng)的 Angular 1 代碼的開發(fā)者來說,從 Angular 1 遷移到 Angular2 + 是一個正確的挑選,可是當(dāng)他企圖遷移而且看到 Angular 的新老版別之間的巨大區(qū)別時,這會產(chǎn)生挫敗感,而且這個事實(shí)也解說了 Stackoverflow 上有大量問題的原因。
Vue.js 的缺點(diǎn)
Vue.js 現(xiàn)在即便還無法支持移動運(yùn)用,但在 2017 年的其間一段時間,它經(jīng)過取得開發(fā)者的支持而贏得了與 React 的競爭。
Wordpress 正在考慮用 React 來構(gòu)建其前端布局,而且很可能將 Vue.js 參加 Wordpress 生態(tài)系統(tǒng),就像 Laravel 一樣。不過 Facebook 很快就調(diào)整了 React 許可證,并將這個想法扼殺了。
寫在最終
經(jīng)過三大結(jié)構(gòu)的對比,我們更傾向于 React,在此也引薦其他的團(tuán)隊(duì)根據(jù)自身的情況挑選 Vue.js 或 React?;诖?,開發(fā)者也在 Hacker News (https://news.ycombinator.com/item?id=15999688)上發(fā)表了自己的看法:
@antoriv:
在這次的調(diào)查報(bào)告中,我最感興趣的是百分比,即(曾經(jīng)運(yùn)用過、將再次運(yùn)用)/(曾經(jīng)運(yùn)用過、再次運(yùn)用+之前運(yùn)用過、不再運(yùn)用)。
2016年:
-
React - 91%的滿意度
-
Vue - 91%的滿意度
-
Angular 2 - 65%的滿意度
-
No framework - 65%的滿意度
-
Ember - 50%的滿意度
-
Angular - 40%的滿意度
-
Backbone - 31%的滿意度
2017年:
-
React - 93%的滿意度
-
Vue - 91%的滿意度
-
Angular 2 - 66%的滿意度
-
No framework - 65%的滿意度
-
Aurelia - 56% 的滿意度
-
Polymer - 53% 的滿意度
-
Ember - 41% 的滿意度
-
Angular - 33% 的滿意度
-
Backbone - 23% 的滿意度
其間,特別有趣的是,許多結(jié)構(gòu)的滿意度比“沒有結(jié)構(gòu)”的高。當(dāng)然這主要?dú)w因于許多沒有運(yùn)用結(jié)構(gòu)的開發(fā)者。曾遇到過一些以為前端結(jié)構(gòu)是無稽之談的開發(fā)者(通常是后端開發(fā)人員),他們更喜歡只寫一堆 jQuery。別的,如果您在 Wordpress 網(wǎng)站上工作,那么結(jié)構(gòu)往往是沒有必要的。