MVVM是Model-View-ViewModel的縮寫。mvvm是一種設計思想。Model 層表明數據模型,也能夠在Model中定義數據修改和操做的業務邏輯;View 表明UI 組件,它負責將數據模型轉化成UI 展示出來,ViewModel 是一個同步View 和 Model的對象。vue
在MVVM架構下,View 和 Model 之間並無直接的聯繫,而是經過ViewModel進行交互,Model 和 ViewModel 之間的交互是雙向的, 所以View 數據的變化會同步到Model中,而Model 數據的變化也會當即反應到View 上。webpack
ViewModel 經過雙向數據綁定把 View 層和 Model 層鏈接了起來,而View 和 Model 之間的同步工做徹底是自動的,無需人爲干涉,所以開發者只需關注業務邏輯,不須要手動操做DOM, 不須要關注數據狀態的同步問題,複雜的數據狀態維護徹底由 MVVM 來統一管理。web
mvc和mvvm其實區別並不大。都是一種設計思想。主要就是mvc中Controller演變成mvvm中的viewModel。mvvm主要解決了mvc中大量的DOM 操做使頁面渲染性能下降,加載速度變慢,影響用戶體驗。和當 Model 頻繁發生變化,開發者須要主動更新到View 。bash
答:總共分爲8個階段建立前/後,載入前/後,更新前/後,銷燬前/後。markdown
建立前/後: 在beforeCreate階段,vue實例的掛載元素el尚未。架構
載入前/後:在beforeMount階段,vue實例的$el和data都初始化了,但仍是掛載以前爲虛擬的dom節點,data.message還未替換。在mounted階段,vue實例掛載完成,data.message成功渲染。mvc
更新前/後:當data變化時,會觸發beforeUpdate和updated方法。dom
銷燬前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了事件監聽以及和dom的綁定,可是dom結構依然存在mvvm
webpack中提供了require.ensure()來實現按需加載。之前引入路由是經過import 這樣的方式引入,改成const定義的方式進行引入。 不進行頁面按需加載引入方式:import home from '../../common/home.vue' 進行頁面按需加載的引入方式:const home = r => require.ensure( [], () => r (require('../../common/home.vue'))) 複製代碼