久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Vue面試題之vue實現(xiàn)MVVM數(shù)據(jù)綁定

 印度阿三17 2021-01-16

MVVM

什么是MVVM?

MVVM是Model-View-ViewModel,是把一個系統(tǒng)分為了模型(model),、視圖(view)和view-model三個部分,。vue是一個典型的MVVM思想,數(shù)據(jù)驅(qū)動視圖,。
通俗一點就是view層不直接和model層通信,,他們只能通過view-model層通信。

vue中MVVM的理解

vue是一個MVVM漸進式框架,,MVVM是vue的實際模式,,在vue框架中數(shù)據(jù)會自動驅(qū)動視圖。我們寫vue就知道它的單文件組件開發(fā)方式,。
Model:數(shù)據(jù)層,,僅僅關(guān)注數(shù)據(jù)本身,不關(guān)心任何行為,。

對應(yīng)vue組件中的data,,props屬性。

View:視圖層,,用戶操作頁面,,當(dāng)view-model對model更新的時候,會通過數(shù)據(jù)綁定更新到view,。

對應(yīng)vue組件中的template和style的部分,。

ViewModel:業(yè)務(wù)邏輯層,,view需要什么數(shù)據(jù),ViewModel就提供什么數(shù)據(jù),,view有些哪些操作,,ViewModel就要響應(yīng)這些操作;View和ViewModel兩種交互方式:雙向數(shù)據(jù)傳遞(數(shù)據(jù)屬性和data binding)和單向傳遞操作(命令屬性),;由于ViewModel的雙向數(shù)據(jù)綁定,,當(dāng)Model發(fā)生變化時,ViewModel就會更新,,ViewModel變化,,Model也會更新。

對應(yīng)繼承Vue類的組件實例

vue在MVVM思想下,,view和model沒有直接聯(lián)系,,但是view和view-model、model和view-model之間是會交互的,。當(dāng)view視圖進行dom操作等使數(shù)據(jù)發(fā)生變化時,,可以通過view-model同步到model中,同樣的model數(shù)據(jù)變化也會同步到vue中,。

MVVM的數(shù)據(jù)綁定實現(xiàn)

  • 發(fā)布者-訂閱模式(backbone.js)
  • 臟值模式(angular/react)
  • 數(shù)據(jù)劫持(vue)

Vue實現(xiàn)MVVM的雙向綁定

vue數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式

vue是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,,通過Object.defineProperty()來劫持(監(jiān)聽)各個屬性的settergetter,,在數(shù)據(jù)(對象)發(fā)生變動時發(fā)布消息給訂閱者,,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。
因此,,要實現(xiàn)MVVM的雙向綁定就必須要實現(xiàn)以下幾點:

  • 實現(xiàn)一個數(shù)據(jù)監(jiān)聽器Observer,。對數(shù)據(jù)對象的所有屬性進行監(jiān)聽(包括子屬性對象的屬性),利用Object.defineProperty()對屬性都加上settergetter(這樣的話,,給這個屬性的某個值賦值就會觸發(fā) setter,那么就能監(jiān)聽數(shù)據(jù)的變化),,如發(fā)生變動可拿到最新值并通知訂閱者。
  • 實現(xiàn)一個指令解析器Compile,。對vue每個元素節(jié)點的指令進行掃描和解析,,將指令模板的變量都替換成數(shù)據(jù),然后初始化渲染頁面視圖,,并將每個指令對應(yīng)的節(jié)點綁定更新函數(shù),,添加監(jiān)聽數(shù)據(jù)的訂閱者,,一旦數(shù)據(jù)發(fā)生變動,,收到通知,調(diào)用更新函數(shù)進行數(shù)據(jù)更新,。
  • 實現(xiàn)一個訂閱者Watcher,。Watcher是Observer和Compile之間通信的橋梁,主要任務(wù)是訂閱Observer中的屬性值變化的消息,當(dāng)屬性值發(fā)生變化時,,觸發(fā)指令解析器Compile中對應(yīng)的更新函數(shù),,從而更新視圖。
  • 實現(xiàn)MVVM入口函數(shù),,整合以上三者,。

Vue面試題之vue實現(xiàn)MVVM數(shù)據(jù)綁定

來源:https://www./content-4-823851.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多