MVVM 是 Model-View-ViewModel 的縮寫。mvvm 是一種設計思想。html
主要就是 mvc 中 Controller 演變成 mvvm 中的 viewModel。
mvvm 主要解決了 mvc 中大量的 DOM操做使頁面渲染性能下降,加載速度變慢,影響用戶體驗。和當 Model 頻繁發生變化,開發者須要主動更新到 View 。vue
採用數據劫持結合發佈者-訂閱者模式的方式,經過 Object.defineProperty() 來劫持各個屬性的setter,getter,在數據變更時發佈消息給訂閱者,觸發相應監聽回調。react
低耦合、可重用性、獨立開發、可測試ajax
便於在控制整個Vue實例的過程時更容易造成好的邏輯。vue-router
beforeCreate(建立前):在數據觀測和初始化事件還未開始
created(建立後):完成數據觀測,屬性和方法的計算,初始化事件,$el屬性還沒顯示出來
beforeMount():編譯模板,把data裏面的數據和模板生成html,可是html還沒掛載到頁面
mounted():編譯好的html內容替換el屬性指向的DOM對象,完成html渲染到頁面。此過程當中執行ajax交互
beforeUpdate():數據更新前調用,發生在虛擬DOM從新渲染和打補丁以前,可在該鉤子函數中進一步的更改狀態,不會觸發附加的重複渲染過程
updated():在猶豫數據更改致使的虛擬DOM從新渲染和打補丁以後調用
beforeDestory():在實例銷燬以前調用,此時實例仍然徹底可用
destoryed():實例銷燬後調用,全部事件監聽器會被移除,全部的自實例也會被銷燬。服務器端渲染期間不被調用瀏覽器
定義:寫路由的一個組件
組件:router-link、router-view
鉤子函數:全局導航鉤子、組件內導航鉤子、單獨路由獨享組件服務器
子組件經過props接受數據mvc
$emit方法傳遞參數框架
eventBus,建立一個事件中心,至關於中轉站, 用它來接收和傳遞事件。異步
一、子組件調用父組件可使用this.$parent.方法名
二、子組件裏面用$emit向父組件觸發一個事件,父組件監聽這個事件就好了。
三、父組件把方法傳入子組件中,在子組件裏像接受數據同樣接收,直接調用這個方法
經過ref直接調用子組件的方法:eg:this.$refs.refName.子組件的方法名。
藉助父組件,先調用父組件的方法,用父組件去調用另外一個子組件的方法。
- 和REACT的區別:
react採用特殊的jsx的語法,而vue也推崇寫.vue的特殊文件格式。
對文件內容都有必定的約定,二者都須要編譯後使用,
中心思想都是一切都是組件,組件實例之間能夠嵌套,
都提供合理的鉤子函數,讓開發者定製化的處理需求,
都不內置AJAX,Route等功能到核心包,而是以插件的加載,
在組件開發中都支持mixins的特性
react採用的虛擬DOM會對渲染出來的結果作贓檢查;
vue在模板中提供了指令、過濾器等,能夠快捷方便的操做虛擬DOM
- 和ANGULAR的區別:
都支持指令,包括內置指令和自定義指令;
都支持過濾器,包括內置過濾器和自定義過濾器;
都支持數據的雙向綁定,都不支持低端瀏覽器;
angular的學習成本比較高,而vue的API比較簡單直觀;
angular對數據作贓檢查,因此watch越多越慢;
vue使用基於依賴追蹤的觀察而且使用異步隊列更新,全部數據都是獨立觸發的。
- 和JQuery的區別:
在router目錄下的index.js文件中,對path屬性加上/:id。 使用router對象的params能夠獲取ID
一、建立.vue文件
二、import引入,component裏面定義
三、template使用。
一、創建組件的模板;
二、準備好組件的數據輸入;
三、準備好組件的數據輸出;
四、調用。
$route是「路由信息對象」,包括path,params,hash,query,fullPath,matched,name等路由信息參數。
$router是「路由實例」對象包括了路由的跳轉方法,鉤子函數等。
computer: 當頁面中有某些數據依賴其餘數據進行變更的時候使用;
watch: watch和computed很類似,watch用於觀察和監聽頁面上的vue實例,固然在大部分狀況下咱們都會使用computed,但若是要在數據變化的同時進行異步操做或者是比較大的開銷,那麼watch爲最佳選擇
state、getter、mutation、action、module
VueRouter 的參數中使用 children 配置
vue-router 模塊的 router-link 組件。