2019-06-07

使用Webpack的代碼分離實(shí)現(xiàn)Vue懶加載

當(dāng)一個(gè)Vue的項(xiàng)目體積變得十分龐大的時(shí)候作媚,使用Webpack的代碼分離功能將Vue ComponentsroutesVuex的代碼進(jìn)行分離并按需加載,會(huì)極大的提高App的首屏加載速度。

在Vue的項(xiàng)目中,我們可以在三種不同的情況下使用懶加載和代碼分離功能:

三者的共同點(diǎn)都是使用的動(dòng)態(tài)import筒繁,這在Webpack的第二個(gè)版本就開始被支持。

在Vue組件中進(jìn)行懶加載

在Eggheads中有關(guān)于使用Vue異步組件實(shí)現(xiàn)按需加載組件的解釋巴元。

實(shí)現(xiàn)異步組件只需要使用import函數(shù)去注冊組件即可:

Vue.component('AsyncCmp', () => import('./AsyncCmp'))

也可以使用本地注冊組件的方式:

new Vue({
  // ...
  components: {
    'AsyncCmp': () => import('./AsyncCmp')
  }
})

使用箭頭函數(shù)指向import函數(shù)毡咏,Vue將會(huì)在需要該組件的時(shí)候才執(zhí)行請求加載該組件的代碼。

如果導(dǎo)入的組件是使用命名的方式進(jìn)行導(dǎo)出的逮刨,你可以在Promise的返回值中使用對象解構(gòu)的方式實(shí)現(xiàn)按需加載組件呕缭。下面是加載KeenUI的 UiAlert組件的例子:

components: {
  UiAlert: () => import('keen-ui').then(({ UiAlert }) => UiAlert)
}

在Vue router中進(jìn)行懶加載

Vue router在原生支持懶加載。和懶加載組件的方式一樣修己,都是使用import函數(shù)恢总。例如我們想在/login這個(gè)路由下懶加載Login組件。

// 不再使用 import Login from './login'
const Login = () => import('./login')

new VueRouter({
  routes: [
    { path: '/login', component: Login }
  ]
})

在Vuex中進(jìn)行懶加載

Vuex的registerModule方法允許我們動(dòng)態(tài)的創(chuàng)建Vuex的模塊睬愤。如果我們使用import函數(shù)在Promise中返回模塊作為載荷(payload)片仿,就實(shí)現(xiàn)了懶加載。

const store = new Vuex.Store()

...

// 假設(shè)我們想加載'login'這個(gè)模塊
import('./store/login').then(loginModule => {
  store.registerModule('login', loginModule)
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尤辱,一起剝皮案震驚了整個(gè)濱河市砂豌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌光督,老刑警劉巖阳距,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異可帽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窗怒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門映跟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扬虚,你說我怎么就攤上這事努隙。” “怎么了辜昵?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵荸镊,是天一觀的道長。 經(jīng)常有香客問我堪置,道長躬存,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任舀锨,我火速辦了婚禮岭洲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坎匿。我一直安慰自己盾剩,他們只是感情好雷激,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著告私,像睡著了一般屎暇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驻粟,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天根悼,我揣著相機(jī)與錄音,去河邊找鬼格嗅。 笑死番挺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屯掖。 我是一名探鬼主播玄柏,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贴铜!你這毒婦竟也來了粪摘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤绍坝,失蹤者是張志新(化名)和其女友劉穎徘意,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轩褐,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椎咧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了把介。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勤讽。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拗踢,靈堂內(nèi)的尸體忽然破棺而出脚牍,到底是詐尸還是另有隱情,我是刑警寧澤巢墅,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布诸狭,位于F島的核電站,受9級特大地震影響君纫,放射性物質(zhì)發(fā)生泄漏驯遇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一蓄髓、第九天 我趴在偏房一處隱蔽的房頂上張望妹懒。 院中可真熱鬧,春花似錦双吆、人聲如沸眨唬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匾竿。三九已至瓦宜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岭妖,已是汗流浹背临庇。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昵慌,地道東北人假夺。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像斋攀,于是被迫代替她去往敵國和親已卷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 基于Vue的一些資料 內(nèi)容 UI組件 開發(fā)框架 實(shí)用庫 服務(wù)端 輔助工具 應(yīng)用實(shí)例 Demo示例 element★...
    嘗了又嘗閱讀 1,140評論 0 1
  • vue-cli搭建項(xiàng)目 確保安裝了node與npm 再目標(biāo)文件夾下打開終端 執(zhí)行cnpm i vue-cli -g...
    Akiko_秋子閱讀 3,214評論 1 22
  • 一:什么是閉包淳蔼?閉包的用處侧蘸? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上鹉梨,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,523評論 1 52
  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**讳癌。> > 庫(lib...
    Rui_bdad閱讀 2,890評論 1 4
  • 響應(yīng)式布局的理解 響應(yīng)式開發(fā)目的是一套代碼可以在多種終端運(yùn)行,適應(yīng)不同屏幕的大小,其原理是運(yùn)用媒體查詢,在不同屏幕...
    懶貓_6500閱讀 780評論 0 0