Javascript 框架進步的非常訊速,我們可由Angurlar、ReactJS以及Vue.js的更新速度看出,除此之外,透過Google Trend,
我們可以從下表看到 ReactJS,Angular6 以及Vue.js在這5年內增長,藍色、紅色、黃色分別代表著
ReactJS, Angular 以及Vue.js

由上表可以看出說2013前,Angular與ReactJS的差距不會很多,直到 2016年後差距才逐漸變大

再來,我們可以從mit.jobs來看,目前工作機會最多的是React(共137個),再來是Angular(63個),最後才是Vue(45個)。

接下來,我將以不同框架的優缺點來分析,可以幫助你決定到底要使用哪一種的框架。

Angular

Angular是一個強大的前端 MVVM 開發平台,並由Google維護。它可以用來撰寫出強大的前端應用。

優點

1.由Google維護並定時更新新功能,像是近期更新的功能像是RxJS,且有較快的編譯速度

2.詳細的官方文件,但也需要一定的Coding知識

3.容易實作雙向繫結(Two-Way Binding),可為應用程序實現單一行為,進而將可能的錯誤風險降到最低。

4.MVVM(Model-View-ViewModel)讓開發者在同一支程式中可以專注於不同的部分開發

5.相依注入讓不同的Components可以分離

6.強約束性的框架。它至少可以讓太爛的程序都沒法上線。如果配合Code Review 等管理實踐,那麼可以讓即使是剛畢業的學生也能達到一定的代碼質量。
如果在組內推廣,那麼你可能會減少很多煩事(前提是你能Hold 住)。

7.擁有強大的功能如Routing、Service等功能

缺點

1.個強約束性的框架,沒錯,這既是優點也是缺點,所以你得能認同它提供的約束。一般的程序你寫爛了也能跑,在Angular的框架下你寫爛了可能都無法編譯通過。
所以,除非你已經有了良好的開發習慣或者願意以此為契機改進自己的開發習慣,否則你會覺得處處礙手。

2.雖然官方指定使用 Typescript 降低其複雜度,但也代表需要 Typescript 的基礎知識,對於寫過C#/Java可能會覺得這不就是翻版Java/C# 嗎?
但如果沒寫過,你就要補一些課才能用,不像es5,新手最多看兩個小時就能寫。

3.升級版本問題,即使官方提供了版本升級時的相關步驟,其升級的複雜度仍是最高的

4.擁有強大的功能也是雙面刃,除了相較於其他前端過於肥大外,有時開發者其實不需要那麼多強大的功能(甚至不必要)

5.效能相對於下列兩個要比較的框架,是比較差的

ReactJS

ReactJS是一個專注於View的Library,由Facebook維護,他最主要使用在建立一個大型Web應用且該應用經常需要更動大量資料

優點

1.相較於Angular容易上手,基本語法類似於Html,只要複習Html即可開始撰寫,不像Angular需要有Typescript的基礎知識

2.ReactJs 只負責「View」層,容易維護

4.工作機會多

5.透過Virtual DOM 更新DOM,更新DOM的速度快

6.整合ES6

7.Facebook維護,且有許多大廠專案使用該框架(Microsoft,Yahoo),經歷6年開源,現在有完整的生態系

8.升級相對容易

缺點

1.React本身只是一個V而已,並不是一個完整的框架,所以如果是大型項目想要一套完整的框架的話,基本都需要加上ReactRouter和Flux才能寫大型應用

Vue.js

Vue.js是一個JS framework,起來音似 View,這也是作者取名的用意,Vue.js 專注於 View

優點

1.簡單:官方文件很清楚,跟Angular 有需多與Angular相似的Binding方式但更簡單易學

2.快速:異同步處理方式更新DOM,與React類似

3.漸進式框架,可以只單引用libary當作套件使用,也可使用cli工具快速建立單一網頁應用(SPA)

4.相當小,約20KB

缺點

1.缺少資源。Vue相對於其他兩個框架仍屬小眾,而且開源社群除華人地區外,相對於其他框架也較少數

2.工作機會較少

3.不支援IE8

4.較少的大廠支援,除了掏寶與愛奇異使用Vue做為主流技術外,鮮少聽到其他大廠網站使用該技術

結論

總結來說,每一個框架各有其優缺點,不一定某框架的優點就是其他框架的缺點,在我的團隊中的專案,
有早期的AngularJS,也有Angular4,甚至還有傳統的MVC架構,要使用哪一種框架,則是取決於該專案的大小
以及其功能複雜程度。

參考

1.ReactJS vs Angular5 vs Vue.js — What to choose in 2018?
2.淺談 MVVM 設計模式優缺點
3.在2018 年的時間點,Angular、React、Vue三選一,你更看好誰?為什麼?