在全球大范圍看,React和Angular依然遙遙領先,Vue.js這位后起之秀還需努力做到全球化!
為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用于學習。
JavaScript框架的更新節(jié)奏可以說日新月異,我們可以看到Angular不停地在發(fā)布新的版本,ReactJS和Vue.js也不甘落后。我們來看看最近5年Google的搜索趨勢。圖中藍色、紅色和黃色分別表示Angular、React和Vue.js。
在2013-2014年間,React和Angular的熱度略微有些許差別。之后,它們之間的差距逐漸拉大。從2016年中期開始,React開始增長,逐漸接近Angular的熱度。Vue.js框架一直處于墊底狀態(tài),不是很流行。不過呢,也有逐漸轉熱的趨勢,我相信它會越來越熱門。
總的來說,React和Angular一直保持著相對一致的發(fā)展步調。如果要我嘗試做個預測,那么React會持續(xù)升高,Angular有所下滑。Vue.js依然不是很明晰,不過由于其框架的簡潔性,發(fā)展也不錯。
我們同時也分析了世界范圍內(nèi)前端招聘對框架要求的數(shù)據(jù)。我們從Indeed.com獲得超過60,000工作信息,得到如下的分布圖。
根據(jù)我們的分析,我們決定分享我們對每一個框架的優(yōu)點和缺點的理解,希望可以幫助專業(yè)人士或則工程師做框架選型。
Angular
Angular是一個從2009年就開始推出JavaScript MVVM框架,對于構建高度可交互的網(wǎng)頁應用非常方便。
優(yōu)點
- 新特性:RXJS,快速編譯(3秒內(nèi)),新的HttpClient;
- 詳細的文檔幾乎涵蓋了所有必須的信息,你甚至不需要向同事咨詢。不過,你需要更多的時間去學習;
- 數(shù)據(jù)雙向綁定,可以減少出錯的風險;
- MVVM(Model-View-ViewModel)使得開發(fā)者可以針對同一個App模塊同時開發(fā);
- 依賴注入使得模塊化和模塊中組件引入更加方便;
缺點
- 與生俱來的復雜的語法;好在Angular 5使用TypeScript 2.4,已經(jīng)簡單多了;
- 遷移問題:從低版本升級到新版本的時候,不兼容導致遷移成本高。
使用Angular 5的公司:Upwork, Freelancer, Udemy, YouTube, Paypal, Nike, Google, Telegram, Weather, iStockphoto, AWS, Crunchbase。
ReactJS
ReactJS是一個Facebook在2013年開源的JavaScript庫,可以非常方便地構建大型網(wǎng)頁應用。
優(yōu)點
- 易于學習:由于語法十分簡潔,和Angular相比,React要容易得多。工程師只需要重溫一下HTML的基本知識就足夠。根本不需要像Angular一樣,還要深度學習TypeScript。
- 高度的靈活性;
- 虛擬DOM將HTML,XHTML、或則XML的文檔格式化成樹形結構,這樣瀏覽器可以更容易理解;
- 結合ES6/7,React可以很容易寫出各種酷炫代碼;
- Downward數(shù)據(jù)綁定,也就是說父節(jié)點的數(shù)據(jù)不會受到孩子節(jié)點的影響;
- 100%的開源,每天都有來自全世界無數(shù)的開發(fā)者的更新和改進;
- 絕對的輕量級,因為數(shù)據(jù)處理既可以在用戶端,也可以在服務端;
- 版本遷移非常容易,F(xiàn)acebook提供了”codemods”來自動化這一過程。
缺點
- 缺乏官方文檔:ReactJS的快速開發(fā)使得文檔的缺乏,眾多開發(fā)者的維護也使其缺乏一個系統(tǒng)化的思路;
- React因為太靈活增加了決策成本而不好使;
- 需要很長的時間去掌握,因為ReactJS需要你對如何將UI和MVC框架整合有一個足夠深度的理解。
使用ReactJS的公司: Facebook, Instagram, Netflix, New York Times, Yahoo, Khan Academy, Whatsapp, Codecademy, Dropbox, Airbnb, Asana, Atlassian, Intercom, Microsoft。
Vue.js
Vue.js是一個2013年誕生的前端框架,非常適合用于構架非常靈活的UI和復雜的單頁面應用。
優(yōu)點
- 強化的HTML,也就是說Vue.js有著很多和Angular相似的特點。
- 詳細的文檔,Vue.js有著超級友好的文檔,開發(fā)者可以快速的學會,這將會節(jié)省很多時間;
- 可適用性:你可以很快地從其它框架轉移到Vue.js,因為它和Angular以及React都有一定的相似性;
- 非常棒的整合性:Vue.js可以同時用于單頁面應用和更加復雜的網(wǎng)頁應用。主要在于你可以用它編寫很小的可交互部件,然后可以很容易地整合到現(xiàn)有的項目中而不會影響到整個系統(tǒng);
- 可擴展性:Vue.js可以用于快速開發(fā)大型復用模板;
- 體積小:Vue.js只有20KB左右的大小,使得其速度和靈活性相對于其它框架都好不少。
缺點
- 資源匱乏:Vue.js依然在整個市場中只占有很小的比例,所以相應的資源、知識要少很多;
- 靈活性帶來的風險:有時候,將其整合到大型項目的時候會有一些問題,但是你不見得能夠找到解法;
- 來自中國:許多的元素和描述依然使用中文。這對于開發(fā)中會引入一些復雜性,好在越來越多的相關資料已經(jīng)被翻譯成英文。
使用Vue.js的公司:小米, 阿里巴巴, WizzAir, EuroNews, Grammarly, Gitlab and Laracasts, Adobe, Behance, Codeship, Reuters。
結論: 對于一個真正的工程師,選用什么框架并沒有多大的區(qū)別,因為你只需要花時間去學習和熟悉它們。我們公司里面有精通ReactJS和Angular2/4/5的專家,Vue.js也即將被列入。每一個框架都有各自的優(yōu)點和缺點,所以主要是看自己的應用場景下哪個框架最適合。
關于Fundebug
Fundebug專注于JavaScript、微信小程序、微信小游戲,Node.js和Java實時BUG監(jiān)控。