您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
03 vue訂閱者模式原理(Vue學習系列一 —— MVVM響應式系統的基本實現原理)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-29 06:35:09【】0人已围观
简介行深度比較,一旦發現有屬性發生變化,則重新渲染與之綁定的DOM節點。最簡單的方式就是通過setInterval()定時輪詢檢測數據變動,angular觸發時進入臟值檢測。但只限指定的事件(如:用戶點擊
最簡單的方式就是通過 setInterval() 定時輪詢檢測數據變動,angular觸發時進入臟值檢測。但只限 指定的事件 (如:用戶點擊,輸入操作,ajax請求,setInterval,setTimeout等...),否則需手動調用 apply 函數去強制執行一次臟檢查。
數據劫持 : vue.js 則是采用數據劫持結合發布者-訂閱者模式的方式,通過 Object.defineProperty() 來劫持各個屬性的 setter , getter 在數據變動時發布消息給訂閱者,觸發相應的監聽回調,而產生更新數據和視圖。
原理圖告訴我們,data屬性定義了getter、setter對屬性進行劫持,當屬性值改變是就會notify通知watch對象,而watch對象則會重新觸發組件呈現功能,繼而更新view上的DOM節點樹。
反之,view上輸入數據時,也會觸發data變更,也會觸發訂閱者watch更新,這樣子model數據就可以實時更新view上的數據變化。這樣一個過程就是vue的數據雙向綁定了。
vue是通過數據劫持的方式來做數據綁定的,其中最核心的方法便是通過 Object.defineProperty() 來實現對屬性的劫持,達到監聽數據變動的目的。
Object.defineProperty 是ES5一個方法,可以直接在一個對象上定義一個新屬性,或者修改一個已經存在的屬性,并返回這個對象,對象里目前存在的屬性描述符有兩種主要形式: 數據描述符 和 存取描述符 。
數據描述符 是一個擁有可寫或不可寫值的屬性。
存取描述符 是由一對getter-setter函數功能來描述的屬性。
描述符必須是兩種形式之一;不能同時是兩者。即:有值和可寫,或者可get和set
屬性描述符包括:
我們已經知道怎么實現數據的雙向綁定,首先要對數據進行劫持監聽,所以我們需要設置一個監聽器 Observer ,用來監聽所有屬性。如果屬性發上變化了,就需要告訴訂閱者 Watcher 看是否需要更新。因為訂閱者是有很多個,所以我們需要有一個消息訂閱器 Dep 來專門收集這些訂閱者,然后在監聽器 Observer 和訂閱者 Watcher 之間進行統一管理的。接著,我們還需要有一個指令解析器 Compile ,對每個節點元素進行掃描和解析,將相關指令對應初始化成一個訂閱者 Watcher ,并替換模板數據或者綁定相應的函數,此時當訂閱者 Watcher 接收到相應屬性的變化,就會執行對應的更新函數,從而更新視圖。
因此接下去我們執行以下4個步驟,實現數據的雙向綁定:
深入響應式原理
剖析Vue原理&實現雙向綁定MVVM
《響應式系統的基本原理》.js
JavaScript實現MVVM之我就是想監測一個普通對象的變化
能說說vue的響應式原理嗎?
Vue 是一個 MVVM 框架,核心是雙向數據綁定,VM(視圖模型)是作為 V(視圖) 和 M(模型)的橋梁。下面是對 Vue 響應式(雙向數據綁定)的理解,如果錯誤盡請指出,一起交流,共同進步。
Vue響應式原理核心是 數據劫持,采用 ES5 的 object.defineproperty 的 getter 和 setter 方法。從一個例子出發:
首先,在Vue初始化階段,通過 observer 對 data 中的屬性進行遞歸的劫持,包括 name、job_ undergo、a、b等
在 get階段也就是初始化視圖時,為每一個劫持的屬性分配一個 依賴收集器,主要收集當前屬性的觀察者對象,例子中 name 屬性在模板中有兩處被使用,那么 name 屬性的依賴收集器中就存放兩個觀察者對象
當點擊按鈕時,將 name 修改為 lisi 時,會觸發 observer 的 setter 函數,將 value 更新為 lisi 最新值,然后通知依賴收集器數據發生了更新。
依賴收集就是發布訂閱模式,依賴收集器會通知所有的觀察者對象,當前name 屬性有兩個觀察者對象。
觀察者對象調用對應的回調函數進行相關的處理和DOM更新
以上是純響應式原理的分析和總結,下面配一張流程圖:
很赞哦!(557)
相关文章
- 01 買粉絲訂閱號朋友分享(買粉絲買粉絲文章怎么分享給朋友看)
- 01 買粉絲訂閱號收藏內容怎么找回(如何查看買粉絲買粉絲買粉絲訂閱號的所有歷史文章?)
- 01 買粉絲訂閱號怎么開通小程序(買粉絲小程序怎么開通?)
- 02 tcl海外并購存在的風險(從文化全球化和跨文化管理的角度,分析中國企業跨國并購的機會與風險。)
- 02 python 買粉絲買粉絲超鏈接(如何抓取買粉絲所有買粉絲最新文章)
- 01 買粉絲訂閱號圖標圖片(在買粉絲里點出訂閱號消息為什么右上角沒有頭樣圖標而只有三個點?)
- 02 qq飛車海外版(手機boost是什么模式)
- 02 QQ音樂超級訂閱截圖(qq會員有哪些特權)
- 01 買粉絲訂閱號助手網頁版登錄首頁登錄入口官網(如何下載買粉絲中的訂閱號助手)
- 02 seal外貿術語是什么意思(POL POD,ETA ETD,FOB CIF,VSL/VOY,HB/L MB/L CNT/SEAL,LCL,CFS DOC這些專門的術語,都是什么意思)
热门文章
站长推荐
01 買粉絲訂閱號怎么查看歷史文章(如何查看買粉絲買粉絲買粉絲訂閱號的所有歷史文章?)
02 tcl海外營銷本部總經理(華為的人才戰略)
02 search the youtube website(好玩的有意思的網站推薦一下吧。謝謝!)
01 買粉絲訂閱號助手網頁版登錄首頁網頁(買粉絲用訂閱號助手上的買粉絲登陸直接登陸了,怎么退出去?)
02 save from youtube 買粉絲 download online 買粉絲(drm是什么意思 drm的中文翻譯、讀音、例句?)
02 ps5訂閱制里面的游戲(PS5會員買哪個版本好基礎版及升級版購買推薦)
01 買粉絲訂閱號如何取消看一看推送(買粉絲訂閱號如何取消看一看功能?)
01 買粉絲訂閱號可以設置幾個管理員(買粉絲公眾訂閱號可以設置多個管理員嗎)