vue中的雙向數據綁定原理簡單理解


原文鏈接https://www.toutiao.com/i6667062018404516364/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1552385185&app=news_article&utm_source=weixin&iid=64418677067&utm_medium=toutiao_android&group_id=6667062018404516364

保存

什么是雙向數據綁定?如何去實現?Observer,Compile,Watcher

代碼開發  2019-03-11 17:25:41

根據流程圖來理一下實現一個MVVM:

什么是雙向數據綁定?如何去實現?Observer,Compile,Watcher

 

如上圖所示,我們可以看到,整體實現分為四步:

1、實現一個Compile,對指令進行解析,初始化視圖,並且訂閱數據的變更,綁定好更新函數

2、實現一個Observer,對數據進行劫持,通知數據的變化

3、實現一個Watcher,將其作為以上兩者的一個中介點,在接收數據變更的同時,讓Dep添加當前Watcher,並及時通知視圖進行update。

4、實現MVVM,整合以上三者,作為一個入口函數

流程解讀

第一步:創建MVVM、Compile類,並且利用createDocumentFragment將<div id="app"></div>下的標簽放到JS文檔碎片中去。

第二步:對 標簽 進行編譯,將帶有 v- 指令的標簽和{{ }}的標簽解析出來

第三步:創建Observer類進行數據劫持、深度遞歸劫持,當data中設置值或者修改值的時候,利用Object.defineProperty對值進行監控。

第四步:創建Watch類觀察者,用新值和老值進行比對,如果發生變化,就調用更新方法,進行視圖更新。

第五步:將輸入框v-model和視圖綁定起來,輸入框的值變化,同時頁面中通過{{}}綁定的值也變化,實現雙向數據綁定。

什么是雙向數據綁定?如何去實現?Observer,Compile,Watcher

 

什么是雙向數據綁定?如何去實現?Observer,Compile,Watcher

 

代碼比較粗糙,核心就是這些了。應該來說一定要掌握的,因為Vue,Watcher,Dep等都是大家非常熟悉的構造函數了,創造實例只是前面多了一個關鍵字 new。其他的平常都很熟悉了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM