vue響應資料的原理

2022-02-03 22:43:54 字數 919 閱讀 1590

vue最大的特點就是資料驅動檢視。

vue的資料改變,頁面一定發生改變?不一定。

當操作引用型別的資料,動態新增屬性時,頁面不會發生改變。

vue響應式資料原理(也叫資料繫結原理、雙向資料繫結原理):

底層是object.defineproperty(),目前用的vue2.6版本和將來更新的vue3.0(proxy)都是通過給data中的資料加乙個資料劫持(setter和getter方法)。但是不管哪種版本,ie瀏覽器都有相容性問題,vue2.6不相容ie8及以下,vue3.0不相容ie11。

object.defineproperty()處理data裡的資料,資料就新增上get和set方法,資料獲取的時候觸發get,資料修改的時候觸發set。在修改資料的時候,優先觸發set,觸發watcher監聽,再通知介面。

vue中如果動態新增屬性,該屬性就沒有經歷過處理,就沒有set和get方法,所以資料變頁面不變。

vue提供乙個例項方法:vm.$set(目標物件,'動態新增的屬性名','屬性值')可以新增乙個響應式屬性,會觸發檢視的更新。

面試題:闡述下你所理解的vue的mvvm的響應式原理:

vue.js是採用資料劫持結合發布者-訂閱者模式的方式,通過object.defineproperty()來劫持各個屬性的setter和getter,在資料變動時發布訊息給訂閱者,觸發相應的監聽**。

mvvm作為資料繫結的入口,整合observer、compile、watcher三者,通過observer來監聽自己的model資料變化,通過compile來解析編譯模板指令,最終利用watcher搭起observer和compile之間的通訊橋梁,達到資料變化驅動檢視更新,檢視互動變化時觸發資料model更新的雙向資料繫結效果。

Vue 資料響應式原理

前言 vue.js 的核心包括一套 響應式系統 響應式 是指當資料改變後,vue 會通知到使用該資料的 例如,檢視渲染中使用了資料,資料改變後,檢視也會自動更新。舉個簡單的例子,對於模板 建立乙個 vue 元件 var vm new vue 在 watcher 物件建立過程中,除了記錄 vm get...

vue的響應式原理

在改變資料的時候,檢視會跟著更新。vue利用object.defineproperty的方法裡面的setter 和 getter方法的觀察者模式來實現的。這個方法就是在乙個物件上定義乙個新的屬性,或者改變乙個物件現有的屬性,並且返回乙個物件。裡面有兩個字段 set 和 get 顧名思義,set 就是...

vue響應式布局 Vue 響應式原理

vue2 的資料偵測 在 src observer 目錄裡面,元件例項在初始化時,會呼叫 observe 函式處理 data function initdata vm observe 改寫了所有物件屬性的 getter setter 和陣列原型上的 7 個會改寫陣列方法,從而讓 data 變成可響應...