vue
vue
是一套用於構建用戶頁面的漸進式框架。屬於MVVM(model+view+viewModel)
框架。詳細瞭解能夠到 官網
下面這張圖很好的展現了 vue
的生命週期html
下面咱們詳細解釋一下這張圖vue
顯而易見,這個就是實例化。實例化以後,會執行如下操做。
首先就是初始化事件和生命週期函數。
接着就是beforeCreate(建立前)
執行。可是這個時候拿不到data
裏邊的數據。
injections(注射器) reactivity(響應)
給數據添加觀察者。
created
建立後
created建立後
執行。由於上邊給數據添加了觀察者,因此如今就能夠訪問到data
裏的數據了。這個鉤子也是經常使用的,能夠請求數據了。由於請求數據是異步的,因此發送請求宜早不宜遲,一般在這個時候發送請求。
el
el
指明掛載目標。這個步驟就是判斷一下是否有寫el
,若是沒有就判斷有沒有調用實例上的$mount('')
方法調用。也就是下一張圖。
template
判斷是否有
template
。
template
則渲染 template
裏的內容。
el
指明的掛載對象裏的內容。
beforeMount
掛載前
beforeMount掛載前
執行。
el
這個時候會在實例上建立一個el
,替換掉原來的el
。也是真正的掛載。
mounted
掛載後
mounted掛載後
執行。這個時候DOM
已經加載完成了,能夠操做DOM
了。這個也是經常使用的鉤子。通常操做DOM
都是在這裏。
dataChange
當數據有變更時,會觸發下面這兩個鉤子。
beforeUpdate更新前
和 updated更新後
之間會進行DOM
的從新渲染和補全。
updated
更新後
callDestroy
beforeDestroy銷燬前
和destroy銷燬後
這兩個鉤子是須要咱們手動調用實例上的$destroy
方法纔會觸發的。$destroy
方法調用後。beforeDestroy
銷燬前觸發
destroy
銷燬後觸發
<body> <div id="app"> {{msg}} outerHTML npm init -y npm install vue </div> <script> let vm = new Vue({ el:"#app", // 指明 VUE實例 的掛載目標 (只在 new 建立的實例中遵照) data:{msg:"sxq"}, beforeCreate() { // console.log(this.msg) // 拿不到 // debugger }, created() { // 初始化數據 ajax console.log(this.msg) }, beforeMount() { // alert(1) }, // template:"<div>345</div>", mounted() { // dom 已經加載完成 操做 dom }, beforeUpdate() { alert('更新前') }, updated() { alert('更新後') }, beforeDestroy() { alert('銷燬前') }, destroyed() { alert('銷燬後') }, }) option // vm.$mount('#app') // 等價於 el:"#app" vm.$destroy() // init events, init lifecycle 初始事件,初始化生命週期鉤子函數 // init injections (注射器) reactivity (響應) 給數據添加觀察者 // Compile el's outerHTML as template 編譯el的outerHTML做爲模板 // 在beforeMount mounted 之間 create vm.$el and replace 「el」 with it 會建立一個 el 代替本身的el對象 // virtual DOM re-render and patch 虛擬DOM從新渲染和修補 // when vm.$destroy() is called 當銷燬函數vm.$destroy()調用時 纔會調用銷燬先後的生命週期 // teardown watchs child components and event listeners 移除數據劫持、事件監聽、子組件屬性 全部的東西還保留 只是不能修改 </script> </body>