簡(jiǎn)單的Vue異步組件實(shí)例Demo
前言
在大型應(yīng)用中,我們可能需要將應(yīng)用拆分為多個(gè)小模塊,按需從服務(wù)器下載。為了進(jìn)一步簡(jiǎn)化,Vue.js 允許將組件定義為一個(gè)工廠函數(shù),異步地解析組件的定義。Vue.js 只在組件需要渲染時(shí)觸發(fā)工廠函數(shù),并且把結(jié)果緩存起來(lái),用于后面的再次渲染。
為什么需要異步組件,道理和webpack的按需加載是一樣的,如果一開(kāi)始就加載所有的組件,那么是比較耗時(shí)的,所以我們可以將一些組件定義為異步組件,在需要使用的時(shí)候再進(jìn)行加載。
所以好處的話就顯而易見(jiàn)了 :
- 按需加載,可以節(jié)省首次加載的時(shí)間,提高速度,也算是一個(gè)性能優(yōu)化。
- 那么一個(gè)組件可能會(huì)被使用多次,按需加載的話也不會(huì)加載多次,第一次加載完成就會(huì)緩存下來(lái),和webpack是一樣的,所以不用擔(dān)心
最近讀Vue文檔的時(shí)候仔細(xì)看了一下異步組件部分,第一次看的時(shí)候一臉懵逼,看第二次還是有點(diǎn)迷茫,第三次就有點(diǎn)感覺(jué)了,第四次感覺(jué)有點(diǎn)明白了,遂記錄一下,下面是我寫(xiě)的一個(gè)簡(jiǎn)單Vue異步組件Demo。
實(shí)例代碼
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible"
content="ie=edge">
<title>Document</title>
<script>
// 如果瀏覽器不支持Promise就加載promise-polyfill
if ( typeof Promise === 'undefined' ) {
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js';
document.head.appendChild( script );
}
</script>
<!-- 引入Vue -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app" style="font-size: 22px">
<!-- 異步組件async-comp -->
<async-comp :list="['我是一個(gè)異步組件,','如果加載完成,','我就會(huì)在這里顯示']"></async-comp>
</div>
<!-- 引入main.js -->
<script src="/main.js"></script>
</body>
</html>
異步組件Async-Comp.js,
注意,Async-Comp.js并沒(méi)有在index.html中引用,而是在下面的main.js中動(dòng)態(tài)加載。
window.async_comp = {
template: '\
<ol>\
<li v-for="item in list">{{ item }}</li>\
</ol>',
props: {
list: Array
}
};
main.js
var vm = new Vue( {
el: '#app',
components: {
/* 異步組件async-comp */
'async-comp': function () {
return {
/** 要渲染的異步組件,必須是一個(gè)Promise對(duì)象 */
component: new Promise( function ( resolve, reject ) {
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = '/Async-Comp.js';
document.head.appendChild( script );
script.onerror = function () {
reject( 'load failed!' );
}
script.onload = function () {
if ( typeof async_comp !== 'undefined' )
resolve( async_comp );
else reject( 'load failed!' )
}
} ),
/* 加載過(guò)程中顯示的組件 */
loading: {
template: '<p>loading...</p>'
},
/* 出現(xiàn)錯(cuò)誤時(shí)顯示的組件 */
error: {
template: '\
<p style="color:red;">load failed!</p>\
'
},
/* loading組件的延遲時(shí)間 */
delay: 10,
/* 最長(zhǎng)等待時(shí)間,如果超過(guò)此時(shí)間,將顯示error組件。 */
timeout:3200
}
}
}
} )
github地址:點(diǎn)擊這里
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- 詳解vue2.0 使用動(dòng)態(tài)組件實(shí)現(xiàn) Tab 標(biāo)簽頁(yè)切換效果(vue-cli)
- Vue.js動(dòng)態(tài)組件解析
- vuejs動(dòng)態(tài)組件給子組件傳遞數(shù)據(jù)的方法詳解
- Vue 自定義動(dòng)態(tài)組件實(shí)例詳解
- vue中用動(dòng)態(tài)組件實(shí)現(xiàn)選項(xiàng)卡切換效果
- Vue異步組件使用詳解
- 解析vue路由異步組件和懶加載案例
- Vue異步組件處理路由組件加載狀態(tài)的解決方案
- Vue動(dòng)態(tài)加載異步組件的方法
- Vue動(dòng)態(tài)組件與異步組件實(shí)例詳解
相關(guān)文章
使用keep-alive時(shí),數(shù)據(jù)無(wú)法刷新的問(wèn)題及解決
這篇文章主要介紹了使用keep-alive時(shí),數(shù)據(jù)無(wú)法刷新的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
vue-cli開(kāi)發(fā)環(huán)境實(shí)現(xiàn)跨域請(qǐng)求的方法
本篇文章主要介紹了vue-cli開(kāi)發(fā)環(huán)境實(shí)現(xiàn)跨域請(qǐng)求的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問(wèn)題
這篇文章主要介紹了element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Vue拖拽組件列表實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面配置功能
這篇文章主要介紹了Vue拖拽組件列表實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面配置功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
vue2.0如何借用vue-pdf實(shí)現(xiàn)在線預(yù)覽pdf文件
這篇文章主要介紹了vue2.0如何借用vue-pdf實(shí)現(xiàn)在線預(yù)覽pdf文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue項(xiàng)目如何使用three.js實(shí)現(xiàn)vr360度全景圖片預(yù)覽
這篇文章主要介紹了vue項(xiàng)目如何使用three.js實(shí)現(xiàn)vr360度全景圖片預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
vue實(shí)現(xiàn)簡(jiǎn)單實(shí)時(shí)匯率計(jì)算功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡(jiǎn)單實(shí)時(shí)匯率計(jì)算功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01

