十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容主要講解“vue使用異步組件的原因有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“vue使用異步組件的原因有哪些”吧!
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供宏偉企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為宏偉眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
使用異步組件的原因:1、異步組件可以減少打包的結(jié)果,會(huì)將異步組件分開打包,會(huì)采用異步的方式加載組件,可以有效的解決一個(gè)組件過大的問題。2、異步組件的核心可以給組件定義變成一個(gè)函數(shù),函數(shù)里面可以用import語法,實(shí)現(xiàn)文件的分割加載。
1.異步組件可以減少打包的結(jié)果。會(huì)將異步組件分開打包,會(huì)采用異步的方式加載組件,可以有效的解決一個(gè)組件過大的問題。不使用異步組件,如果組件功能比較多打包出來的結(jié)果就會(huì)變大。
2.異步組件的核心可以給組件定義變成一個(gè)函數(shù),函數(shù)里面可以用import語法,實(shí)現(xiàn)文件的分割加載,import語法是webpack提供的,采用的就是jsonp。
components:{
VideoPlay:(resolve)=>import("../components/VideoPlay")
}
components:{
VideoPlay(resolve) {
require(["../components/VideoPlay"], resolve)
}
}
或者使用回調(diào)函數(shù)
在createComponent方法中,會(huì)有相應(yīng)的異步組件處理,首先定義一個(gè)asyncFactory變量,然后進(jìn)行判斷,如果組件是一個(gè)函數(shù),然后會(huì)去調(diào)resolveAsyncComponent方法,然后將賦值在asyncFactory上的函數(shù)傳進(jìn)去,會(huì)讓asyncFactory馬上執(zhí)行,執(zhí)行的時(shí)候并不會(huì)馬上返回結(jié)果,因?yàn)樗钱惒降?,返回的是一個(gè)promise,這時(shí)候這個(gè)值就是undefined,然后就會(huì)先渲染一個(gè)異步組件的占位,空虛擬節(jié)點(diǎn)。如果加載完之后會(huì)調(diào)factory函數(shù)傳入resolve和reject兩個(gè)參數(shù),執(zhí)行后返回一個(gè)成功的回調(diào)和失敗的回調(diào),promise成功了就會(huì)調(diào)resolve,resolve中就會(huì)調(diào)取forceRender方法強(qiáng)制更新視圖重新渲染,forceRender中調(diào)取的就是$forceUpdate,同時(shí)把結(jié)果放到factory.resolved上,如果強(qiáng)制刷新的時(shí)候就會(huì)再次走resolveAsyncComponent方法,這時(shí)候有個(gè)判斷,如果有成功的結(jié)果就把結(jié)果直接放回去,這時(shí)候resolveAsyncComponent返回的就不是undefined了,就會(huì)接的創(chuàng)建組件,初始化組件,渲染組件。
src/core/vdom/create-component.js
1.createComponent方法
export function createComponent (
Ctor: Class
2.resolveAsyncComponent方法
export function resolveAsyncComponent (
factory: Function,
baseCtor: Class
3.createAsyncPlaceholder 方法
// 創(chuàng)建一個(gè)異步組件的占位,空虛擬節(jié)點(diǎn) 也就是一個(gè)注釋
export function createAsyncPlaceholder (
factory: Function,
data: ?VNodeData,
context: Component,
children: ?Array
到此,相信大家對“vue使用異步組件的原因有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!