Vue的雙向資料繫結原理是什麼?

2022-06-25 20:18:15 字數 864 閱讀 6471

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

具體步驟:

第一步:需要observe的資料物件進行遞迴遍歷,包括子屬性物件的屬性,都加上settergetter

這樣的話,給這個物件的某個值賦值,就會觸發setter,那麼就能監聽到了資料變化

第二步:compile解析模板指令,將模板中的變數替換成資料,然後初始化渲染頁面檢視,並將每個指令對應的節點繫結更新函式,新增監聽資料的訂閱者,一旦資料有變動,收到通知,更新檢視

第三步:watcher訂閱者是observer和compile之間通訊的橋梁,主要做的事情是:

1、在自身例項化時往屬性訂閱器(dep)裡面新增自己

2、自身必須有乙個update()方法

3、待屬性變動dep.notice()通知時,能呼叫自身的update()方法,並觸發compile中繫結的**,則功成身退。

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

Vue資料雙向繫結原理是什麼?

面試官 說下vue資料雙向繫結原理是什麼?me 固定回答 vue的資料雙向繫結原理是資料劫持,結合發布訂閱者模式,通過object.defineproperty 來劫持各個屬性的setter,getter屬性,當資料變化時發布訊息給訂閱者,觸發對應的 函式。面試官 可以具體說下嗎?詳細一點?me 這...

vue雙向資料繫結原理

vue應用的是mvvm框架,view和model分離,然後通過vm雙向資料繫結,div 原生物件即資料 var data 建立乙個 viewmodel 例項 var vm new vue 然而乙個動態資料的繫結,是怎麼實現的呢,首先vue利用es5的defineproperty方法裡的get,set...

vue雙向資料繫結原理

text id text show p var text document.getelementbyid text show document.getelementbyid show var model object.defineproperty model,name set function ne...