webpack的懶加載和預(yù)加載詳解
正常加載
為了看的方便,index.js中的代碼非常簡單
console.log('index.js執(zhí)行了')
import { test } from './test.js'
document.getElementById('btn-wrap').onclick = function () {
test()
}
test.js
console.log('test.js執(zhí)行了')
export function test() {
const value = 'hello world'
console.log('test value: ', value)
}
在index.html中添加按鈕
<button id='btn-wrap'>點擊</button>
執(zhí)行webpack命令:

可以看到?jīng)]有點擊按鈕時,test.js就已經(jīng)加載了 。如果test.js比較大,加載比較耗性能。我們就希望能在需要使用的時候在加載
懶加載
修改index.js中的代碼
console.log('index.js執(zhí)行了')
// import { test } from './test.js'
// document.getElementById('btn-wrap').onclick = function () {
// test()
// }
document.getElementById('btn-wrap').onclick = function () {
console.log('==== 點擊按鈕')
import(/*webpackChunkName:'test' */"./test")
.then(({test}) => {
console.log('test加載成功')
test()
})
.catch(error => {
console.log('test加載失敗 error:', error)
})
}
再次執(zhí)行webpack命令,在瀏覽器中查看日志
點擊按鈕之前只加載了index.js

點擊按鈕:

可以看到點擊按鈕之后test.js才執(zhí)行。
預(yù)加載
懶加載實現(xiàn)了js文件按需加載,在需要使用時才進(jìn)行加載,但是如果js文件非常大加載速度比較慢,在使用時再加載就會使頁面出現(xiàn)卡頓。為了優(yōu)化這個問題,可以使用Prefetch先預(yù)加載。
沒有使用預(yù)加載
點擊按鈕之前不會加載test.js文件

點擊按鈕之后才會去加載test.js文件

使用預(yù)加載
設(shè)置webpackPrefetch:true使用預(yù)加載
document.getElementById('btn-wrap').onclick = function () {
console.log('==== 點擊按鈕')
import(/*webpackChunkName:'test' ,webpackPrefetch:true*/"./test")
.then(({test}) => {
console.log('test加載成功')
test()
})
.catch(error => {
console.log('test加載失敗 error:', error)
})
}
點擊按鈕之前就預(yù)加載了test.js文件:

點擊按鈕:

總結(jié)
正常加載:很多資源并行加載,同一時間加載多個文件
懶加載:需要時才加載
預(yù)加載:等其他資源加載完畢,瀏覽器空閑了,再偷偷加載被設(shè)置為預(yù)加載的資源
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
JS關(guān)閉窗口與JS關(guān)閉頁面的幾種方法小結(jié)
本篇文章要是對JS關(guān)閉窗口與JS關(guān)閉頁面的幾種方法進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
封裝了一個支持匿名函數(shù)的Javascript事件監(jiān)聽器
這篇文章主要介紹了支持匿名函數(shù)的Javascript事件監(jiān)聽封裝,需要的朋友可以參考下2014-06-06
JavaScript刪除數(shù)組中指定元素5種方法例子
這篇文章主要給大家介紹了關(guān)于JavaScript刪除數(shù)組中指定元素5種方法,在最近的項目中,有用到j(luò)s對數(shù)組的操作,所以這里總結(jié)一下,需要的朋友可以參考下2023-07-07
document.documentElement和document.body區(qū)別介紹
body是DOM對象里的body子節(jié)點,即body標(biāo)簽,documentElement 是整個節(jié)點樹的根節(jié)點root,詳細(xì)介紹請看本文,感興趣的朋友可以參考下2013-09-09
JavaScript forEach()遍歷函數(shù)使用及介紹
這篇文章主要介紹了JavaScript forEach()遍歷函數(shù)使用及介紹,本文講解了使用forEach遍歷數(shù)組的用法以及提前終止循環(huán)的一個方法技巧,需要的朋友可以參考下2015-07-07
echarts如何實現(xiàn)動態(tài)曲線圖(多條曲線)
這篇文章主要介紹了echarts如何實現(xiàn)動態(tài)曲線圖(多條曲線),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
一個JS函數(shù)搞定網(wǎng)頁標(biāo)題(title)閃動效果
這篇文章主要介紹了使用JS函數(shù)實現(xiàn)網(wǎng)頁標(biāo)題(title)閃動效果的代碼,需要的朋友可以參考下2014-05-05

