轉載自:https://www.cnblogs.com/hubgit/p/6633214.htmljavascript
首先,咱們先了解什麼是MVX框架模式?html
MVX框架模式:MVC+MVP+MVVM前端
1.MVC:Model(模型)+View(視圖)+controller(控制器),主要是基於分層的目的,讓彼此的職責分開。vue
View經過Controller來和Model聯繫,Controller是View和Model的協調者,View和Model不直接聯繫,基本聯繫都是單向的。java
用戶User經過控制器Controller來操做模板Model從而達到視圖View的變化。react
2.MVP:是從MVC模式演變而來的,都是經過Controller/Presenter負責邏輯的處理+Model提供數據+View負責顯示。git
在MVP中,Presenter徹底把View和Model進行了分離,主要的程序邏輯在Presenter裏實現。angularjs
而且,Presenter和View是沒有直接關聯的,是經過定義好的接口進行交互,從而使得在變動View的時候能夠保持Presenter不變。web
MVP模式的框架:Riot,js。npm
3.MVVM:MVVM是把MVC裏的Controller和MVP裏的Presenter改爲了ViewModel。Model+View+ViewModel。
View的變化會自動更新到ViewModel,ViewModel的變化也會自動同步到View上顯示。
這種自動同步是由於ViewModel中的屬性實現了Observer,當屬性變動時都能觸發對應的操做。
MVVM模式的框架有:AngularJS+Vue.js和Knockout+Ember.js後兩種知名度較低以及是早起的框架模式。
Vue.js是什麼?
看到了上面的框架模式介紹,咱們能夠知道它是屬於MVVM模式的框架。那它有哪些特性呢?
其實Vue.js不是一個框架,由於它只聚焦視圖層,是一個構建數據驅動的Web界面的庫。
Vue.js經過簡單的API(應用程序編程接口)提供高效的數據綁定和靈活的組件系統。
Vue.js的特性以下:
1.輕量級的框架
2.雙向數據綁定
3.指令
4.插件化
Vue.js與其餘框架的區別?
1.與AngularJS的區別
相同點:
都支持指令:內置指令和自定義指令。
都支持過濾器:內置過濾器和自定義過濾器。
都支持雙向數據綁定。
都不支持低端瀏覽器。
不一樣點:
1.AngularJS的學習成本高,好比增長了Dependency Injection特性,而Vue.js自己提供的API都比較簡單、直觀。
2.在性能上,AngularJS依賴對數據作髒檢查,因此Watcher越多越慢。
Vue.js使用基於依賴追蹤的觀察而且使用異步隊列更新。全部的數據都是獨立觸發的。
對於龐大的應用來講,這個優化差別仍是比較明顯的。
2.與React的區別
相同點:
React採用特殊的JSX語法,Vue.js在組件開發中也推崇編寫.vue特殊文件格式,對文件內容都有一些約定,二者都須要編譯後使用。
中心思想相同:一切都是組件,組件實例之間能夠嵌套。
都提供合理的鉤子函數,可讓開發者定製化地去處理需求。
都不內置列數AJAX,Route等功能到核心包,而是以插件的方式加載。
在組件開發中都支持mixins的特性。
不一樣點:
React依賴Virtual DOM,而Vue.js使用的是DOM模板。React採用的Virtual DOM會對渲染出來的結果作髒檢查。
Vue.js在模板中提供了指令,過濾器等,能夠很是方便,快捷地操做DOM。
如何使用Vue.js?
1.安裝
(1)script
若是項目直接經過script加載CDN文件,代碼示例以下:
<script src="http://webapp.didistatic.com/static/webapp/shield/z/vue/vue/1.0.24/vue.min.js"></script>
(2)npm
若是項目給予npm管理依賴,則可使用npm來安裝Vue,執行以下命令:
$npm i vue --save-dev
(3)bower
若是項目基於bower管理依賴,則可使用bower來安裝Vue,執行以下命令:
$bower i vue --save-dev
推薦另外一篇官方文檔,但願有幫助:http://www.cnblogs.com/hubgit/p/8010560.html
其實Vue.js不是一個框架,由於它只聚焦視圖層,是一個構建數據驅動的Web界面的庫。
Vue.js經過簡單的API(應用程序編程接口)提供高效的數據綁定和靈活的組件系統。
Vue.js的特性以下:
1.輕量級的框架
2.雙向數據綁定
3.指令
4.插件化
優勢: 1. 簡單:官方文檔很清晰,比 Angular 簡單易學。
2. 快速:異步批處理方式更新 DOM。
3. 組合:用解耦的、可複用的組件組合你的應用程序。
4. 緊湊:~18kb min+gzip,且無依賴。
5. 強大:表達式 & 無需聲明依賴的可推導屬性 (computed properties)。
6. 對模塊友好:能夠經過 NPM、Bower 或 Duo 安裝,不強迫你全部的代碼都遵循 Angular 的各類規定,使用場景更加靈活。
缺點: 1. 新生兒:Vue.js是一個新的項目,沒有angular那麼成熟。
2. 影響度不是很大:google了一下,有關於Vue.js多樣性或者說豐富性少於其餘一些有名的庫。
3. 不支持IE8:
2、angularJS:
angularJS是一款優秀的前端JS框架,已經被用於Google的多款產品當中。
angularJS的特性以下:
1.良好的應用程序結構
2.雙向數據綁定
3.指令
4.HTML模板
5.可嵌入、注入和測試
優勢: 1. 模板功能強大豐富,自帶了極其豐富的angular指令。
2. 是一個比較完善的前端框架,包含服務,模板,數據雙向綁定,模塊化,路由,過濾器,依賴注入等全部功能;
3. 自定義指令,自定義指令後能夠在項目中屢次使用。
4. ng模塊化比較大膽的引入了Java的一些東西(依賴注入),可以很容易的寫出可複用的代碼,對於敏捷開發的團隊來講很是有幫助。
缺點: 1. angular 入門很容易 但深刻後概念不少, 學習中較難理解.
2. 文檔例子很是少, 官方的文檔基本只寫了api, 一個例子都沒有, 不少時候具體怎麼用都是google來的, 或直接問misko,angular的做者.
3. 對IE6/7 兼容不算特別好, 就是能夠用jQuery本身手寫代碼解決一些.
4. 指令的應用的最佳實踐教程少, angular其實很靈活, 若是不看一些做者的使用原則,很容易寫出 四不像的代碼, 例如js中仍是像jQuery的思想有不少dom操做.
5. DI 依賴注入 若是代碼壓縮須要顯示聲明.
1.聲明式設計:React採用聲明範式,能夠輕鬆描述應用。
2.高效:React經過對DOM的模擬,最大限度地減小與DOM的交互。
3.靈活:React能夠與已知的庫或框架很好地配合。
優勢: 1. 速度快:在UI渲染過程當中,React經過在虛擬DOM中的微操做來實現對實際DOM的局部更新。
2. 跨瀏覽器兼容:虛擬DOM幫助咱們解決了跨瀏覽器問題,它爲咱們提供了標準化的API,甚至在IE8中都是沒問題的。
3. 模塊化:爲你程序編寫獨立的模塊化UI組件,這樣當某個或某些組件出現問題是,能夠方便地進行隔離。
4. 單向數據流:Flux是一個用於在JavaScript應用中建立單向數據層的架構,它隨着React視圖庫的開發而被Facebook概念化。
5. 同構、純粹的javascript:由於搜索引擎的爬蟲程序依賴的是服務端響應而不是JavaScript的執行,預渲染你的應用有助於搜索引擎優化。
6. 兼容性好:好比使用RequireJS來加載和打包,而Browserify和Webpack適用於構建大型應用。它們使得那些艱難的任務再也不讓人望而生畏。
缺點: 1. React自己只是一個V而已,並非一個完整的框架,因此若是是大型項目想要一套完整的框架的話,基本都須要加上ReactRouter和Flux才能寫大型應用。