Vue.js路由懶加載[譯]

作者:Joshua Bemenderfer
原文地址: lazy-loading-routes
譯者:jeneser

當(dāng)你的SPA(單頁(yè)應(yīng)用程序)變得復(fù)雜時(shí)低飒,打包構(gòu)建后的Javascript包會(huì)變得非常大,以至于嚴(yán)重影響頁(yè)面的加載時(shí)間。幸運(yùn)的是:vue-router支持WebPack內(nèi)置的異步模塊加載系統(tǒng)。所以,那些使用較少的路由組件不必打包進(jìn)bundles里,只需要在路由被訪問(wèn)時(shí)按需加載。

使用

假設(shè)你的路由配置是這樣的:

import MainPage from './routes/MainPage.vue'
import OtherMassivePage from './routes/OtherMassivePage.vue'

const routes = [
  { path: '/main', component: MainPage },
  { path: '/other', component: OtherMassivePage }
]

簡(jiǎn)單來(lái)說(shuō)撩鹿,你可以使用require.ensure來(lái)替代import。它能幫你將OtherMassivePage組件以及該組件的所有依賴分割到一個(gè)單獨(dú)的chunk中去悦屏。

現(xiàn)在重啟你的應(yīng)用节沦,你會(huì)發(fā)現(xiàn)并沒(méi)有什么改變。但础爬,當(dāng)你打開(kāi)開(kāi)發(fā)人員工具甫贯,選擇檢查網(wǎng)絡(luò),再一次訪問(wèn)/other路徑時(shí)看蚜,你會(huì)看到一個(gè)新的文件被加載進(jìn)來(lái)叫搁。

import MainPage from './routes/MainPage.vue'
const OtherMassivePage = r => require.ensure([], () => r(require('./routes/OtherMassivePage.vue')))

const routes = [
  { path: '/main', component: MainPage },
  { path: '/other', component: OtherMassivePage }
]

是的,這看起來(lái)是有點(diǎn)奇怪,相信我渴逻,它并不是那么糟糕疾党。

還有一種方法是將路由對(duì)應(yīng)的組件定義成異步組件。寫(xiě)起來(lái)像這樣:

const OtherMassivePage = resolve => {
  // 空數(shù)組用來(lái)指定該路由組件需要加載的依賴
  require.ensure([], () => {
    resolve(require('./routes/OtherMassivePage.vue'))
  })
}

不過(guò)惨奕,你最好不要使用這種包裹起來(lái)的寫(xiě)法雪位,因?yàn)閃ebPack會(huì)使用靜態(tài)分析來(lái)檢測(cè)和分割塊。比較好的做法是梨撞,將他們寫(xiě)成一行以減少空間的占用雹洗。

按組分塊

有時(shí)候我們想把某個(gè)路由下的所有組件都打包在同個(gè)異步 chunk 中。只需要 給 chunk 命名卧波,提供require.ensure第三個(gè)參數(shù)作為 chunk 的名稱:

// 這兩條路由被打包在相同的塊中时肿,訪問(wèn)任一路由都會(huì)延遲加載該路由組件
const OtherMassivePage = r => require.ensure([], () => r(require('./routes/OtherMassivePage.vue')), 'big-pages')
const WeightLossPage = r => require.ensure([], () => r(require('./routes/WeightLossPage.vue')), 'big-pages')

不像許多其他的WebPack任務(wù),這個(gè)方法出乎意料的簡(jiǎn)單港粱,并且能產(chǎn)生意想不到的有用結(jié)果螃成。如果你正在維護(hù)那些變得臃腫不堪的大型單頁(yè)應(yīng)用,我會(huì)毫不猶豫的將這種方法推薦給你啥容。

End

作者:Joshua Bemenderfer
原文地址: lazy-loading-routes

譯者:jeneser
譯者GitHub:https://github.com/jeneser

版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名(創(chuàng)意共享3.0許可證

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锈颗,一起剝皮案震驚了整個(gè)濱河市顷霹,隨后出現(xiàn)的幾起案子咪惠,更是在濱河造成了極大的恐慌,老刑警劉巖淋淀,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遥昧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡朵纷,警方通過(guò)查閱死者的電腦和手機(jī)炭臭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)袍辞,“玉大人鞋仍,你說(shuō)我怎么就攤上這事〗劣酰” “怎么了威创?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谎懦。 經(jīng)常有香客問(wèn)我肚豺,道長(zhǎng),這世上最難降的妖魔是什么界拦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任吸申,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘截碴。我一直安慰自己梳侨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布隐岛。 她就那樣靜靜地躺著猫妙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聚凹。 梳的紋絲不亂的頭發(fā)上割坠,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音妒牙,去河邊找鬼彼哼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛湘今,可吹牛的內(nèi)容都是我干的敢朱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摩瞎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拴签!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起旗们,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蚓哩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后上渴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體岸梨,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年稠氮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曹阔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡隔披,死狀恐怖赃份,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奢米,我是刑警寧澤抓韩,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站恃慧,受9級(jí)特大地震影響园蝠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痢士,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一彪薛、第九天 我趴在偏房一處隱蔽的房頂上張望茂装。 院中可真熱鬧,春花似錦善延、人聲如沸少态。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彼妻。三九已至,卻和暖如春豆茫,著一層夾襖步出監(jiān)牢的瞬間侨歉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工揩魂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幽邓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓火脉,卻偏偏與公主長(zhǎng)得像牵舵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倦挂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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