例項化vue發生了什麼 詳解vue生命週期

2021-09-14 03:36:31 字數 1569 閱讀 3336

本文將對vue的生命週期進行詳細的講解,讓你了解乙個vue例項的誕生都經歷了什麼~
我在github上建立了乙個存放vue筆記的倉庫,以後會陸續更新一些知識和專案中遇到的坑,有興趣的同學可以去看看哈(歡迎star)!

傳送門data:,

methods:

}})元件例項剛被建立,此時無法訪問到 el 屬性和 data 屬性等..

beforecreate()`)   //undefined

console.log(`屬性message:$`) //undefined

console.log(`方法init:$`) //undefined

}

當乙個 vue 例項被建立時,他向 vue 的響應式系統中加入了其 data 物件中能找到的所有屬性.

利用 es5 特性 object.defineproperty,遍歷 data 物件下所有屬性,將其轉化為 getter/setter,以便攔截物件賦值與取值操作,然後利用發布/訂閱者模式,從而實現資料的雙向繫結!

所以只有當例項被建立時 data 中存在的屬性才是響應式的!!!!

將methods 下的所有方法進行宣告.

將methods下的方法和data下的屬性通過遍歷和利用 es5 特性 object.defineproperty**到例項下.

this.a = this.$data.a = this.data.a;

this.fn = this.$methods.fn = this.methods.fn;

元件例項建立完成,屬性已繫結,但 dom 還未生成,$el 屬性還不存在!

created()`)   //undefined

console.log(`屬性message:$`) //message:hey,vue-lifeperiod!

}

將模板 template 編譯成 ast 樹、render 函式(new watch 將模板與資料建立聯絡)以及 staticrenderfns 函式(通過 diff 演算法優化 dom 更新);

執行 render 方法,返回乙個 vnode 物件(virtual dom)

模板編譯/掛載之前

beforemount()`)

}

模板編譯/掛載之後

mounted()`)

}

元件更新之前

beforeupdate()
元件更新之後

updated()
元件銷毀之前

beforedestroy()`) //message:hey,vue-lifeperiod!

}

元件銷毀之後

destroyed()`) //message:hey,vue-lifeperiod!

}

例項銷毀後雖然 dom 和屬性方法都還存在,但改變他們都將不再生效!

例項化vue發生了什麼 詳解vue生命週期

data methods 元件例項剛被建立,此時無法訪問到 el 屬性和 data 屬性等.beforecreate undefined console.log 屬性message undefined console.log 方法init undefined 當乙個 vue 例項被建立時,他向 vu...

vue 初始化請求例子 Vue例項初始化

vue的建構函式new vue 一切都是從vue的建構函式開始的.當執行了npm run dev的構建過程就是執行這些初始化的過程,首先在node modules中找到vue原始碼,core檔案是對vue核心的包裝,入口檔案index.js,先從乙個建構函式開始,然後在vue的prototype上進...

Vue拖拽元件開發例項詳解

為什麼選擇vue?主要原因 對於前端開發來說,相容性是我們必須要考慮的問題之一。我們的專案不需要相容低版本瀏覽器。專案本身也是乙個資料驅動型的。加之,vue本身具有以下主要特性 使用虛擬dom 輕量級框架 高效的資料繫結 靈活的元件系統 完整的開發生態鏈。這就是我們為什麼選擇vue框架的一些原因。為...