Angular5 - Vue.js -ReactJS 的區別和特點
參考https://blog.fundebug.com/2018/07/09/react_vs_angular_vue/
Angular 5
Angular是一個從2009年就開始推出JavaScript MVVM 框架
優點
- 新特性:RXJS(是一種針對非同步資料流程式設計工具,或者叫響應式擴充套件程式設計;Angular引入RxJS為了就是讓非同步可控、更簡單),Angular 5還可以快速編譯(3秒內),有新的HttpClient;
- 詳細的文件幾乎涵蓋了所有必須的資訊,便於學習;
- 資料雙向繫結,可以減少出錯的風險;
- MVVM(
Model-View-ViewModel
),View的變化會自動更新到 ViewModel,ViewModel的變化也會自動同步到View上顯示(自動同步是因為ViewModel的屬性中實現了Observer,當屬性變更時能觸發相應的操作
)使得開發者可以針對同一個App模組同時開發; - 依賴注入使得模組化和模組中元件引入更加方便;
缺點
- 語法比較複雜;好在Angular 5使用TypeScript 2.4,已經簡化了很多
- 遷移問題:從低版本升級到新版本的時候,不相容導致遷移成本高。
適用情況
由於Angular使用的是TypeScript,因此它更適合於單頁Web應用,應用程式體積較大,而且有著未來的擴充套件計劃的也適用Angular
ReactJS
ReactJS是一個Facebook在2013年開源的JavaScript庫
優點
- 易於學習:由於語法十分簡潔
- 元件化程度高具有高度的靈活性;
- 虛擬DOM將HTML,XHTML、或則XML的文件格式化成樹形結構,這樣瀏覽器可以更容易理解;
- 結合ES6/7,React可以很容易寫出各種酷炫程式碼;
- Downward資料繫結,單向資料流,父節點的資料不會受到孩子節點的影響;
- 100%的開源,每天都有來自全世界無數的開發者的更新和改進;
- 絕對的輕量級,因為資料處理既可以在使用者端,也可以在服務端;
- 版本遷移非常容易,Facebook提供了”codemods”來自動化這一過程。
缺點
- 缺乏官方文件:ReactJS的快速開發使得文件的缺乏,眾多開發者的維護也使其缺乏一個系統化的思路;
- React因為太靈活增加了決策成本而不好使;
- 需要很長的時間去掌握,因為ReactJS需要你對如何將UI和MVC框架整合有一個足夠深度的理解。
適用情況
適用於對於靈活性要求勝過功能性專案,適合熟悉JavaScript的開發者,可以用來開發應用程式體積較大,而且有著未來的擴充套件計劃的專案
Vue.js
Vue.js是一個2013年誕生的前端框架
優點
- 強化的HTML,有著很多和Angular相似的特點。
- 有詳細的文件
- 可適用性:它和Angular以及React都有一定的相似性;
- 非常棒的整合性:Vue.js可以同時用於單頁面應用和更加複雜的網頁應用。可以用它編寫很小的可互動部件,可以很容易地整合到現有的專案中而不會影響到整個系統;
- 可擴充套件性:Vue.js可以用於快速開發大型複用模板;
- 體積小:Vue.js只有20KB左右的大小,使得其速度和靈活性相對於其它框架都好很多。
- 程式碼整潔性好
- Vue提供了最簡單的學習曲線,因此它是初學者的理想選擇
缺點
- 資源匱乏:Vue.js依然在整個市場中只佔有很小的比例,所以相應的資源、知識要少很多;
- 靈活性帶來的風險:有時候,將其整合到大型專案的時候會有一些問題,但是你不見得能夠找到解法;
適用情況
非常適合用於構架非常靈活的UI和複雜的單頁面應用,適合小團隊和小專案
相關文章
- char,nchar,varchar,nvarchar的區別和特點
- reactjs和vuejs的區別是什麼ReactJSVue
- 軟體危機和軟體缺陷的特點和區別
- CISC和RISC是什麼?它們的特點和區別?
- CSS中px和em屬性的特點與區別CSS
- 面試—塊級、行內、內聯元素的特點,常見的元素的特點屬性(href、src的區別,alt和title的區別)面試
- linux ext4,ext3的特點和區別Linux
- 伺服器動態ip和靜態ip的區別和特點伺服器
- Vue.js中 computed 和 methods 的區別Vue.js
- R語言的特點是什麼?和Python有何區別?R語言Python
- &和&&的一點區別
- 【知識分享】伺服器動態ip和靜態ip的區別和特點伺服器
- vue.js全域性元件和區域性元件區別Vue.js元件
- var、let、const變數宣告的區別及特點變數
- Devops區別於程式設計師和系統管理員的特點? - Redditdev程式設計師
- 思科-Seven【NAT應用篇】!動態與靜態路由的區別和特點~~~路由
- 【Privilege】SYSOPER和SYSDBA特權的區別與聯絡
- Oracle 和 mysql的9點區別OracleMySql
- HashTable和HashMap的六點區別HashMap
- 碼元和碼點的區別
- Vue.js 的 computed 屬性和 watch 的區別在哪裡?Vue.js
- 人臉識別資料集和特點
- g++ 和 gcc 的相同點和區別GC
- reactjs 注意點ReactJS
- 即時通訊和即時通訊的區別是什麼,都有什麼特點?
- 特網雲 CPU和GPU有什麼區別GPU
- ConcurrentHashMap和HashMap的一點區別HashMap
- promise和Rxjs的一點區別PromiseJS
- 程式入口點EP和OEP的區別
- Docker有哪些特點?與Linux有什麼區別?DockerLinux
- mixins和元件的區別和優缺點元件
- mysql和Oracle的特點,優缺點MySqlOracle
- PHP與Python有什麼區別?各具有哪些特點?PHPPython
- TCP和UDP的優缺點及區別TCPUDP
- 10.int和Integer的區別(重點)
- getAttribute()和attr()一點區別
- 線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
- JSON的特點和優勢JSON