// 預設vue在初始化資料時,會給data中的屬性使用object.defineproperty 重新定義所有屬性,
// 當頁面取到對應屬性時,會進行依賴收集(收集當前元件的watcher)
// 如果屬性發生變化會通知相關依賴進行更新操作
// dep.notify() 觸發資料對應的依賴進行更新
object.defineproperty();
//使用函式劫持的方式,重寫了陣列的方法
// vue將data中的陣列,進行了原型鏈重寫。
// 指向了自己定義的陣列原型方法,這樣當呼叫陣列api時,可以通知依賴更新,如果陣列中包含著引用型別。
// 會對陣列中的引用型別再次進行監控。
initdata
new observer();
// 因為如果不採用非同步更新,那麼每次更新資料都會對當前元件進行重新渲染,所以為了提高效能。vue會在本輪資料更新後,再去非同步更新檢視。
nexttick(flushschedulerqueue); //在下一次tick中重新整理watcher佇列
//渲染節流
// nexttick 方法主要是使用了巨集任務和微任務,定義了乙個非同步方法,多次呼叫nexttick 會將方法存入佇列中,
// 通過這個非同步方法清空當前佇列,所以這個nexttick就是非同步方法。
// 巨集任務和微任務:都是非同步方法,nexttick() callbacks.push(cb) timerfunc() 返回promise
// flushqueue 會使用nexttick保證當前檢視渲染完成。
//vue 中的computed的特點
// 預設computed也是乙個watcher是具備快取的,只要當依賴的屬性發生變化時,才會更新檢視
initcomputed
new watcher()
definecomputed
createcomputedgetter
// computed watch method 區別
// 只要把方法用在模板上了,每次檢視更新 就會重新渲染,效能開銷比較大
// 計算屬性 是具備快取的
// computed 和watch的原理 裡面都是乙個watcher。 唯一不同的是computd裡面是具備快取。
// 當使用者指定了watch中的deep屬性為true時,如果當前監控的值是陣列型別,會對物件中的每一項進行求值,此時會將當前watcher存入到對應屬性的依賴中,
// 這樣陣列中物件發生變化時也會通知資料更新。
vm.$watch(exporfn,handler,options)
// computed 內部會用在模板上的。
vue面試題 vue原理
1.元件化和mvvm 2.響應式原理 3.vdom 和 diff 演算法 4.模板編譯 5.元件渲染過程 6.前端路由 元件化基礎 1.很久以前 的元件化 asp jsp php 已經有元件化 nodejs 中已有類似元件化 2.資料驅動檢視 vue mvvm 3.資料驅動檢視 react sets...
vue面試題目
1,vue元件通訊 1 父子元件之間的通訊 父 子 子元件中props引數,父元件中引入子元件,在子元件上面繫結所需的值 eg 子元件中 父元件中 子 父 emit v on方法,子元件中,繫結方法a,通過 emit觸發父元件中的方法,順便傳參到父元件 eg 子元件中 showsearchmodal...
Vue之面試題
1 說下vue資料雙向繫結的原理 2 說說vuex的作用以及應用場景 3 說說vue元件的資料通訊方式 4 vue的原始碼有看過嗎?說說vuex工作原理 5 為什麼說虛擬 dom會提高效能,解釋一下它的工作原理 6 請你詳細介紹一些 package.json 裡面的配置 7 為什麼說vue是一套漸進...