中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中created和mounted的區別淺析

發布時間:2020-09-03 18:09:21 來源:腳本之家 閱讀:141 作者:dutny 欄目:web開發

前言

關于vue.js中的生命周期,如果不是有特別的需求,一般在項目開發過程中更多的使用created和mounted,
所以在本文中主要講解created與mounted在開發中的主要使用區別。

關于完整的生命周期,不久會在另一篇文章中做整體的理解,包括activated、destroyed等,不過可能會有點晚,大家可以留意一下

版本信息:

  • 系統:win10
  • Vue:2.5.2
  • webpack:3.6.0
  • npm:6.9.0
  • node:10.15.3

生命周期

完整的生命周期圖示為了避免占用板塊,這里就不貼出來了,大家可以自行前往vue生命周期查看。

瀏覽器渲染過程

具體的瀏覽器渲染過程我會過幾天另外寫一遍文章,大家可以去我的文章看看。

  • 構建DOM樹
  • 構建css規則樹,根據執行順序解析js文件。
  • 構建渲染樹Render Tree
  • 渲染樹布局layout
  • 渲染樹繪制

生命周期中的瀏覽器渲染

這里是官方文檔對生命周期api的解釋,大家可以看看

以下為測試vue部分生命函數

beforeCreate(){
 console.log('beforecreate:',document.getElementById('first'))//null
 console.log('data:',this.text);//undefined
 this.sayHello();//error:not a function
},
created(){
 console.log('create:',document.getElementById('first'))//null
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
},
beforeMount(){
 console.log('beforeMount:',document.getElementById('first'))//null
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
},
mounted(){
 console.log('mounted:',document.getElementById('first'))//<p></p>
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
}

通過上述測試我們可以知道,

生命周期 是否獲取dom節點 是否可以獲取data 是否獲取methods
beforeCreate
created
beforeMount
mounted

以我的個人理解,vue生命周期實際上和瀏覽器渲染過程是掛鉤的,

在beforecreate階段,對瀏覽器來說,整個渲染流程尚未開始或者說準備開始,對vue來說,實例尚未被初始化,data observer和 event/watcher也還未被調用,在此階段,對data、methods或文檔節點的調用現在無法得到正確的數據。

在created階段,對瀏覽器來說,渲染整個HTML文檔時,dom節點、css規則樹與js文件被解析后,但是沒有進入被瀏覽器render過程,上述資源是尚未掛載在頁面上,也就是在vue生命周期中對應的created
階段,實例已經被初始化,但是還沒有掛載至$el上,所以我們無法獲取到對應的節點,但是此時我們是可以獲取到vue中data與methods中的數據的

在beforecreate階段,實際上與created階段類似,節點尚未掛載,但是依舊可以獲取到data與methods中的數據。

在mounted階段,對瀏覽器來說,已經完成了dom與css規則樹的render,并完成對render tree進行了布局,而瀏覽器收到這一指令,調用渲染器的paint()在屏幕上顯示,而對于vue來說,在mounted階段,vue的template成功掛載在$el中,此時一個完整的頁面已經能夠顯示在瀏覽器中,所以在這個階段,即可以調用節點了(關于這一點,在筆者測試中,在mounted方法中打斷點然后run,依舊能夠在瀏覽器中看到整體的頁面)。

寫在最后

筆者目前也只是一個職場小白,粗略探討一下自己的看法,若有疑問,或者文章錯誤,都可以在評論中指出,我們一起討論

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

离岛区| 阿瓦提县| 博白县| 竹北市| 大足县| 清流县| 济阳县| 三原县| 鞍山市| 龙泉市| 庄浪县| 包头市| 兰考县| 台中市| 延庆县| 濉溪县| 夏邑县| 海口市| 韩城市| 佛冈县| 吉木萨尔县| 仪征市| 伊春市| 调兵山市| 宁陵县| 芜湖县| 乌兰察布市| 茌平县| 景德镇市| 焦作市| 锡林郭勒盟| 沁水县| 河西区| 永川市| 偏关县| 台山市| 林西县| 常德市| 玉环县| 沅陵县| 尉犁县|