一、MVVM 是 Model-View-ViewModel 的縮寫。
Model代表數據模型,也可以在Model中定義數據修改和操作的業務邏輯。
View 代表UI 組件,它負責將數據模型轉化成UI 展現出來。
ViewModel 監聽模型數據的改變和控制視圖行為、處理用戶交互,簡單理解就是一個同步View 和 Model的對象,連接Model和View。
在MVVM架構下,View 和 Model 之間並沒有直接的聯系,而是通過ViewModel進行交互,Model 和 ViewModel 之間的交互是雙向的, 因此View 數據的變化會同步到Model中,而Model 數據的變化也會立即反應到View 上。
ViewModel 通過雙向數據綁定把 View 層和 Model 層連接了起來,而View 和 Model 之間的同步工作完全是自動的,無需人為干涉,因此開發者只需關注業務邏輯,不需要手動操作DOM, 不需要關注數據狀態的同步問題,復雜的數據狀態維護完全由 MVVM 來統一管理。
二、Vue的生命周期
beforeCreate(創建前) 在數據觀測和初始化事件還未開始
created(創建后) 完成數據觀測,屬性和方法的運算,初始化事件,$el屬性還沒有顯示出來
beforeMount(載入前) 在掛載開始之前被調用,相關的render函數首次被調用。實例已完成以下的配置:編譯模板,把data里面的數據和模板生成html。注意此時還沒有掛載html到頁面上。
mounted(載入后) 在el 被新創建的 vm.$el 替換,並掛載到實例上去之后調用。實例已完成以下的配置:用上面編譯好的html內容替換el屬性指向的DOM對象。完成模板中的html渲染到html頁面中。此過程中進行ajax交互。
beforeUpdate(更新前) 在數據更新之前調用,發生在虛擬DOM重新渲染和打補丁之前。可以在該鈎子中進一步地更改狀態,不會觸發附加的重渲染過程。
updated(更新后) 在由於數據更改導致的虛擬DOM重新渲染和打補丁之后調用。調用時,組件DOM已經更新,所以可以執行依賴於DOM的操作。然而在大多數情況下,應該避免在此期間更改狀態,因為這可能會導致更新無限循環。該鈎子在服務器端渲染期間不被調用。
beforeDestroy(銷毀前) 在實例銷毀之前調用。實例仍然完全可用。
destroyed(銷毀后) 在實例銷毀之后調用。調用后,所有的事件監聽器會被移除,所有的子實例也會被銷毀。該鈎子在服務器端渲染期間不被調用。
1.什么是vue生命周期?
答: Vue 實例從創建到銷毀的過程,就是生命周期。從開始創建、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、銷毀等一系列過程,稱之為 Vue 的生命周期。
2.vue生命周期的作用是什么?
答:它的生命周期中有多個事件鈎子,讓我們在控制整個Vue實例的過程時更容易形成好的邏輯。
3.vue生命周期總共有幾個階段?
答:它可以總共分為8個階段:創建前/后, 載入前/后,更新前/后,銷毀前/銷毀后。
4.第一次頁面加載會觸發哪幾個鈎子?
答:會觸發 下面這幾個beforeCreate, created, beforeMount, mounted 。
5.DOM 渲染在 哪個周期中就已經完成?
答:DOM 渲染在 mounted 中就已經完成了。