1. 程式人生 > >vue.js和angular.js的區別

vue.js和angular.js的區別

關於Vue的描述 HTML模版+JSON資料,再建立一個Vue例項,就這麼簡單 關於Angular的描述 AngularJS是為了克服HTML在構建應用上的不足而設計的。HTML是一門很好的為靜態文字展示設計的宣告式語言,但要構建WEB應用的話它就顯得乏力了。所以我做了一些工作(你也可以覺得是小花招)來讓瀏覽器做我想要的事。 由此可以看出Vue比Angular相對來說簡單一些,在 API 與設計兩方面上 Vue.js 都比 Angular 簡單得多,因此你可以快速地掌握它的全部特性並投入開發。
Vue.js 是一個更加靈活開放的解決方案。它允許你以希望的方式組織應用程式,而不是任何時候都必須遵循 Angular 制定的規則。它僅僅是一個檢視層,所以你可以將它嵌入一個現有頁面而不一定要做成一個龐大的單頁應用。在配合其他庫方面它給了你更大的的空間,但相應,你也需要做更多的架構決策。例如,Vue.js 核心預設不包含路由和 Ajax 功能,並且通常假定你在應用中使用了一個模組構建系統。這可能是最重要的區別。

Angular 使用雙向繫結,Vue 也支援雙向繫結,不過預設為單向繫結,資料從父元件單向傳給子元件。在大型應用中使用單向繫結讓資料流易於理解。
在 Vue.js 中指令和元件分得更清晰。指令只封裝 DOM 操作,而元件代表一個自給自足的獨立單元 —— 有自己的檢視和資料邏輯。在 Angular 中兩者有不少相混的地方。
Vue.js 有更好的效能,並且非常非常容易優化,因為它不使用髒檢查。Angular,當 watcher 越來越多時會變得越來越慢,因為作用域內的每一次變化,所有 watcher 都要重新計算。並且,如果一些 watcher 觸發另一個更新,髒檢查迴圈(digest cycle)可能要執行多次。 Angular 使用者常常要使用深奧的技術,以解決髒檢查迴圈的問題。有時沒有簡單的辦法來優化有大量 watcher 的作用域。Vue.js 則根本沒有這個問題,因為它使用基於依賴追蹤的觀察系統並且非同步列隊更新,所有的資料變化都是獨立地觸發,除非它們之間有明確的依賴關係。唯一需要做的優化是在 v-for 上使用 track-by。

有意思的是,Angular 2 和 Vue 用相似的設計解決了一些 Angular 1 中存在的問題。