摘要:動(dòng)態(tài)組件如果我們打算在一個(gè)地方根據(jù)不同的狀態(tài)引用不同的組件的話,比如頁(yè),那么給我們提供動(dòng)態(tài)組件。實(shí)現(xiàn)動(dòng)態(tài)組件的加載。的值可以是一個(gè)已經(jīng)注冊(cè)的組件的名字或者一個(gè)組件的選對(duì)象。
動(dòng)態(tài)組件
如果我們打算在一個(gè)地方根據(jù)不同的狀態(tài)引用不同的組件的話,比如tab頁(yè),那么Vue給我們提供動(dòng)態(tài)組件。
基本使用Parent.vue
{{btn.name}}
運(yùn)行結(jié)果如下圖:
當(dāng)我們點(diǎn)擊不同的按鈕時(shí),下面會(huì)切換不同的組件。實(shí)現(xiàn)動(dòng)態(tài)組件的加載。is 的值可以是一個(gè)已經(jīng)注冊(cè)的組件的名字或者一個(gè)組件的選對(duì)象。當(dāng)我們點(diǎn)擊按鈕時(shí),這個(gè)按鈕的 disabled 為 true 然后我們將給這個(gè)按鈕一個(gè)active 的css類,同時(shí)改變 currentCom 的值
keep-alive:動(dòng)態(tài)組件的緩存如果我們需要頻繁的切換頁(yè)面,每次都是在組件的創(chuàng)建和銷毀的狀態(tài)間切換,這無(wú)疑增大了性能的開銷。那么我們要怎么優(yōu)化呢?
Vue提供了動(dòng)態(tài)組件的 緩存。keep-alive 會(huì)在切換組件的時(shí)候緩存當(dāng)前組件的狀態(tài),等到再次進(jìn)入這個(gè)組件,不需要重新創(chuàng)建組件,只需要從前面的緩存中讀取并渲染。
Parent.vue(其余地方代碼和上面一樣)
{{btn.name}}
Childs1.vue
{{title}}
Childs2.vue
Childs2
運(yùn)行結(jié)果如下圖:
"
對(duì)比:如果我們將
前一組圖片在切換組件的時(shí)候,title從1加到3,然后等下次再切換回來(lái)的時(shí)候,title還是停留在3,從控制臺(tái)可以看出,Childs1.vue這個(gè)組件的mounted的鉤子函數(shù)只有一次。后一組圖片,title一開始加到3,下一次進(jìn)入這個(gè)組件的時(shí)候title又從1開始,控制臺(tái)圖片也顯示這個(gè)組件經(jīng)歷個(gè)了多次鉤子函數(shù),說(shuō)明組件是銷毀重建的。
tips:因?yàn)榫彺娴慕M件只需要建立一次,所以如果我們要在每次進(jìn)入組件的鉤子函數(shù)里面做相應(yīng)的操作的時(shí)候,會(huì)出現(xiàn)問(wèn)題,所以請(qǐng)明確我們使用的場(chǎng)景,避免出現(xiàn)bug
異步組件異步組件存在的意義在于加載一個(gè)體量很大的頁(yè)面時(shí),如果我們不設(shè)置加載的優(yōu)先級(jí)的話,那么可能頁(yè)面在加載視頻等信息的時(shí)候會(huì)非常占用時(shí)間,然后主要信息就會(huì)阻塞在后面在加載。這對(duì)用戶來(lái)說(shuō)無(wú)疑不是一個(gè)很差的體驗(yàn)。但是如果我們?cè)O(shè)置加載的順序,那么我們可以優(yōu)先那些最重要的信息優(yōu)先顯示,優(yōu)化了整個(gè)項(xiàng)目。一般來(lái)說(shuō)我們是將加載組件和 路由 (vue-router)配合在一起使用,所以這里我就不細(xì)講了,具體學(xué)習(xí)可以參考官網(wǎng)來(lái)進(jìn)行學(xué)習(xí)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101408.html
摘要:目前采用動(dòng)態(tài)加載異步組件的方式來(lái)實(shí)現(xiàn)小組件之間的通信。內(nèi)容使用過(guò)的都應(yīng)該知道的動(dòng)態(tài)加載組件通過(guò)來(lái)綁定需要加載的組件。總結(jié)本篇主要借助的動(dòng)態(tài)組件和打包單文件來(lái)實(shí)現(xiàn)動(dòng)態(tài)加載異步組件,通過(guò)的事件總線掛載在上來(lái)實(shí)現(xiàn)平級(jí)組件之間的通信。 背景: 目前我們項(xiàng)目都是按組件劃分的,然后各個(gè)組件之間封裝成產(chǎn)品。目前都是采用iframe直接嵌套頁(yè)面。項(xiàng)目中我們還是會(huì)碰到一些通用的組件跟業(yè)務(wù)之間有通信,這種...
摘要:,常規(guī)組件,卒。小結(jié)總之呢,上面分析了在中編譯遠(yuǎn)程模板的可能性,最后得出了兩種方法異步組件,應(yīng)該是官方的推薦方法動(dòng)態(tài)組件,變通之法,論壇上發(fā)現(xiàn)的思路當(dāng)然如果有其他方法歡迎交流,本文如果有不嚴(yán)謹(jǐn)不正確的地方也歡迎指出本文發(fā)自我的,原文鏈接我的 說(shuō)明 有些時(shí)候你可能需要從后臺(tái)獲取模板,并在前臺(tái)在自己編譯,這在用 AngularJS 1.x 的時(shí)候似乎很常見,可以直接用 ng-include...
摘要:,常規(guī)組件,卒。小結(jié)總之呢,上面分析了在中編譯遠(yuǎn)程模板的可能性,最后得出了兩種方法異步組件,應(yīng)該是官方的推薦方法動(dòng)態(tài)組件,變通之法,論壇上發(fā)現(xiàn)的思路當(dāng)然如果有其他方法歡迎交流,本文如果有不嚴(yán)謹(jǐn)不正確的地方也歡迎指出本文發(fā)自我的,原文鏈接我的 說(shuō)明 有些時(shí)候你可能需要從后臺(tái)獲取模板,并在前臺(tái)在自己編譯,這在用 AngularJS 1.x 的時(shí)候似乎很常見,可以直接用 ng-include...
摘要:發(fā)現(xiàn)了動(dòng)態(tài)組件異步組件這個(gè)東西簡(jiǎn)直是救命啊動(dòng)態(tài)組件異步組件思路分析有了動(dòng)態(tài)組件這個(gè)東西之后,我們就可以根據(jù)綁定不同的值來(lái)渲染不同的組件。每個(gè)組件要傳給子組件的值和接收子組件的事件也可以動(dòng)態(tài)的綁定上去。 推動(dòng)我實(shí)現(xiàn)這個(gè)功能的業(yè)務(wù)背景 最近接到一個(gè)讓我很頭疼的需求:產(chǎn)品要求我們系統(tǒng)頁(yè)面上所有的模塊都支持順序的變動(dòng)。比如有 模塊A、B、C、D,可以無(wú)序的展示在頁(yè)面上,我剛聽到這個(gè)需求的時(shí)候我...
摘要:實(shí)例組件模板某些網(wǎng)頁(yè)中用于多個(gè)位置,例如通知,注釋和附件。動(dòng)態(tài)組件模板另一種方法是使用某種加載器來(lái)加載您需要的模板。那么這里發(fā)生了什么默認(rèn)情況下,支持動(dòng)態(tài)組件。超級(jí)方便安裝我們的組件后,我們嘗試加載模板。 組件并不總是具有相同的結(jié)構(gòu)。有時(shí)需要管理許多不同的狀態(tài)。異步執(zhí)行此操作會(huì)很有幫助。 實(shí)例: 組件模板某些網(wǎng)頁(yè)中用于多個(gè)位置,例如通知,注釋和附件。讓我們來(lái)一起看一下評(píng)論,看一下我表達(dá)...
閱讀 1776·2021-10-27 14:15
閱讀 3835·2021-10-08 10:12
閱讀 1168·2021-09-22 15:55
閱讀 3230·2021-09-22 15:17
閱讀 834·2021-09-02 15:40
閱讀 1748·2019-08-29 18:33
閱讀 1099·2019-08-29 15:22
閱讀 2355·2019-08-29 11:08