前言
懒加载也就是延迟加载,不知道大家在工作中有没有发现,当你的SPA(单页应用程序)变得复杂时,打包构建后的Javascript包会变得非常大,以至于严重影响页面的加载时间。幸运的是:vue-router支持WebPack内置的异步模块加载系统。所以,那些使用较少的路由组件不必打包进bundles里,只需要在路由被访问时按需加载。话不多说了,来一起看看详细的实现过程:
使用
假设你的路由配置是这样的:
import MainPage from './routes/MainPage.vue' import OtherMassivePage from './routes/OtherMassivePage.vue' const routes = [ { path: '/main', component: MainPage }, { path: '/other', component: OtherMassivePage } ]
简单来说,你可以使用require.ensure
来替代import。它能帮你将OtherMassivePage组件以及该组件的所有依赖分割到一个单独的chunk中去。
现在重启你的应用,你会发现并没有什么改变。但,当你打开开发人员工具,选择检查网络,再一次访问/other路径时,你会看到一个新的文件被加载进来。
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 } ]
是的,这看起来是有点奇怪,相信我,它并不是那么糟糕。
还有一种方法是将路由对应的组件定义成异步组件。
写起来像这样:
const OtherMassivePage = resolve => { // 空数组用来指定该路由组件需要加载的依赖 require.ensure([], () => { resolve(require('./routes/OtherMassivePage.vue')) }) }
不过,你最好不要使用这种包裹起来的写法,因为WebPack会使用静态分析来检测和分割块。比较好的做法是,将他们写成一行以减少空间的占用。
按组分块
有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中。只需要 给 chunk 命名,提供require.ensure第三个参数作为 chunk 的名称:
// 这两条路由被打包在相同的块中,访问任一路由都会延迟加载该路由组件 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任务,这个方法出乎意料的简单,并且能产生意想不到的有用结果。如果你正在维护那些变得臃肿不堪的大型单页应用,我会毫不犹豫的将这种方法推荐给你。
作者:Joshua Bemenderfer
原文地址: lazy-loading-routes
译者:jeneser
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]