1.設計模式:
?MVVM 模式:在實例對象中所寫的數據就是M層厂画,html模板標簽視圖層就是v層泌辫。當數據變化的時候視圖層會改變别厘,相互的改變是由vm層來控制的,也就是由vue框架來實現的愉阎。
MVP(JQ)是面向dom操作。MVVM?是對數據進行操作
2.基礎知識
? 1)什么是實例:
? 2)實例中可以包括:
(注:從控制臺中看到實例(vm)中其他的內容(實例方法):vm.$data vm.$el)
? 3)實例的生命周期函數(8個)
? ? ? ?生命周期函數就是vue實例在某一個時間點會自動執(zhí)行的函數
? 4)vue的模板語法
???差值表達式:{{}} ? ? v-text:? ? 前兩個的作用是一樣的? v-html:(三者的區(qū)別)
? ?eg: ?{{name + 'Lee'}} ? ? ?v-text = "name +'Lee'" ? (可以寫js的表達式或者變量)
? ?v-bind: "title"
當我們看到一個vue指令后邊跟著一個值的時候力奋,這個值不再是一個字符串榜旦,而是一個js的表達式
?3.計算屬性,方法與偵聽器
計算屬性:緩存機制 ?當它依賴的數據不變的時候景殷,頁面在渲染的時候溅呢,就不會重新再次計算(復用上次的結果)
方法:每一次渲染頁面,不管值是否改變猿挚,方法都會執(zhí)行咐旧,重新計算。
watch(監(jiān)聽)也有緩存绩蜻,但是比計算屬性復雜
計算屬性有緩存 ?,但方法沒有铣墨,故當三個方法都能實現時,優(yōu)先選擇計算屬性(性能優(yōu)化)
eg:實現由姓和名組合顯示全名(三種方法)
2)計算屬性的getter和setter
get:獲取值 ? ? ?set:設置值 ? ??
一下是通過改變傳入的設置值办绝,使獲取值發(fā)生改變
4. vue中的樣式綁定
class的對象綁定
數組改變樣式
style改變樣式
對象綁定和數組綁定
5.vue中的條件渲染
v-if? v-show? :是否顯示
區(qū)別:v-if :只要對應的變量值是false伊约,它就不存在了(dom的刪除和添加)
v-show:(性能會高)對應的變量值是false,它依然存在八秃,只是display:none
v-if 和 v-else放在一起使用
v-if? v-else-if? v-else(多個條件的使用)
key值的作用:如果給一個標簽加一個key值碱妆,vue會知道它是頁面上唯一的一個元素,
如果key值不同昔驱,那么vue就不會嘗試去復用之前的? (提高性能疹尾,盡量key值是唯一的)
6. vue中的列表渲染
改變數組中的內容:不能直接的通過下標的形式改變數組,只能通過幾個數組的變異方法來改變
7個方法:pop? (刪除)? push? shift? unshift? splice(截取) sort reserve
數組變化骤肛,頁面也會跟著變化纳本。
方法二:改變數組的引用地址
關于template:模板占位符,可以幫我們包裹一些元素腋颠,但是在循環(huán)的過程中不會被渲染
循環(huán)對象:
改變對象里邊的值的方法:1)改變引用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2)用set方法
vue 中的set的方法
1)改變對象里邊的數據(全局)
Vue.set(vm.userInfo,"address","beijing")
vm.$set(vm.userInfo,"address","beijing")(實例的方法)
2)改變數組的數據
Vue.set(vm.userInfo,1,5)
vm.$set(vm.userInfo,1,5)
7.前端組件化 ?:
? ?1) ?什么是前端組件化: ?簡單說就是頁面的邏輯拆分成小的區(qū)域實現?
? ?2)使用組件化的優(yōu)點:?提高代碼的可維護性
? ?3) 父子組件的傳值
? ? ? 父組件把內容傳遞給子組件:v-bind ? 簡寫:
? ? ? 子組件給父組件傳值($emit)
? 4)使用is屬性解決模板標簽上的bug?
在標簽中使用組件繁成,又不能直接使用,故可以通過is屬性淑玫,使其滿足html格式規(guī)范
5)在子組件中data必須是個函數巾腕,而不能是對象(根組件是對象),并且返回對象
子組件會被多次調用,這樣會是的每一個子組件都擁有獨立的數據存儲
6)在vue中如何操作DOM
通話ref獲取dom節(jié)點絮蒿,在元素標簽上加一個ref
如果在組件上加了ref尊搬,會怎么樣(獲取到的是組件的引用)