什么是MVVM偏形?
MVVM是Model-View-ViewModel縮寫胖喳,也就是把MVC中的Controller變成了ViewModel
Model 代表數(shù)據(jù)模型、View代表Ui組件苟跪、ViewModel是 他們兩個(gè)的橋梁亲配,數(shù)據(jù)會(huì)綁定到ViewModel層 然后將數(shù)據(jù)渲染到頁(yè)面中套耕,試圖變化會(huì)通知ViewModel層更新數(shù)據(jù)
vue2 的響應(yīng)式數(shù)據(jù)原理谁帕?
簡(jiǎn)單來說就是 把一個(gè)普通的 js對(duì)象傳入 vue實(shí)例 作為 data。這時(shí)Vue 會(huì)遍歷這個(gè)對(duì)象中所有property冯袍,使用 Object.defineProperty
把這些property 全部轉(zhuǎn)為 getter/setter匈挖。然后對(duì)其監(jiān)聽,在屬性被訪問和修改時(shí)通知康愤,更新視圖儡循。
每一個(gè)組件實(shí)例都對(duì)應(yīng)一個(gè) watcher 實(shí)例,當(dāng) setter 觸發(fā)時(shí)會(huì)通知watcher征冷,然后重新渲染
vue2的生命周期
創(chuàng)建前/后择膝、掛載前/后、更新前/后检激、銷毀前/后
beforeCreate/created肴捉、beforeMount/mounted、beforeUpdate/updated叔收、beforeDestroy/destroyed
beforeCreate 階段是不能訪問 data齿穗、methods、computed 和 watch 上的 數(shù)據(jù)的 饺律!
computed 和 watch 的區(qū)別
computed 是一個(gè)具有緩存的 watcher 窃页,當(dāng)依賴的屬性發(fā)生變化就會(huì)更新視圖,適用于比較消耗性能的場(chǎng)景(例如:購(gòu)物車場(chǎng)景)
watch 沒有緩存的特性复濒。數(shù)據(jù)變脖卖,就會(huì)觸發(fā)響應(yīng)的操作,支持異步巧颈。如果需要深度監(jiān)聽對(duì)象的屬性時(shí)畦木,可以使用 deep:true
組件間的幾種常用傳值 操作
props、$emit洛二、$parent馋劈、$ref攻锰、eventbus、vuex
v-if 和 v-show 的區(qū)別
v-if 當(dāng)條件不成立時(shí) 時(shí)不會(huì)渲染 dom 元素的
v-show 操作的是 display 妓雾,是變化 dmo 的 顯示 和 隱藏 (回流H⑼獭!P狄觥)
display 和 visibility