原生js模擬vue實現雙向數據綁定

原生js模擬vue實現雙向數據綁定

寫在前面

vue.js是mvvm模式的框架,如圖:

在這裏插入圖片描述
通過和傳統mvc模式的對比,我們發現多了個ViewModel,沒有控制器(controller)了。ViewModel是mvvm模式的精髓所在它連接了view(視圖層)與model(數據模型),view或model發生改變,他們對應的model和view也會發生改變,非常方便。尤其是在做表單類型業務的時候深感欣慰。
它自帶了雙向數據綁定,使我們的開發變得便捷而快速。那麼它的底層是如何實現的呢?
還是看圖,一目瞭然:在這裏插入圖片描述
簡而言之,要實現mvvm的雙向綁定,是採用數據劫持結合發佈者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發佈消息給訂閱者,觸發相應的監聽回調。
具體細節就不詳細介紹了,大家可自行百度。此篇文章是介紹怎麼用原生js實現雙向數據綁定

原生js實現雙向數據綁定

第一步 編寫html結構

在這裏插入圖片描述
只需要一個input框和一個p標籤即可

第二步 編寫js, 重點:Object.defineProperty()

該方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 並返回這個對象。在這裏插入圖片描述

第三步 監聽鍵盤事件

在這裏插入圖片描述

完整代碼

在這裏插入圖片描述
註釋很詳細了,相信大家都能看懂。

說在後面

Object.defineProperty(),這個方法非常重要,也很經典。本人後續會新開一篇專門講它,感興趣的可以持續關注。
覺得本文中能幫到你的可以點贊轉發,轉發請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章