乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       印度阿三17 2021-01-16

      MVVM

      什么是MVVM?

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

      vue中MVVM的理解

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

      對應vue組件中的data,props屬性。

      View:視圖層,用戶操作頁面,當view-model對model更新的時候,會通過數據綁定更新到view。

      對應vue組件中的template和style的部分。

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

      對應繼承Vue類的組件實例

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

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

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

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

      vue數據劫持結合發(fā)布者-訂閱者模式

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

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多