博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue.js路由懒加载[译]
阅读量:6977 次
发布时间:2019-06-27

本文共 1544 字,大约阅读时间需要 5 分钟。

作者:

原文地址:

译者:

当你的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 中。只需要 ,提供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任务,这个方法出乎意料的简单,并且能产生意想不到的有用结果。如果你正在维护那些变得臃肿不堪的大型单页应用,我会毫不犹豫的将这种方法推荐给你。

End

作者:

原文地址:

译者:

译者GitHub:

版权声明:自由转载-非商用-非衍生-保持署名()

勘误&讨论:

你可能感兴趣的文章
VIM变IDE
查看>>
Bridge Pattern
查看>>
JSP&Servlet路径问题
查看>>
时间格式枚举
查看>>
高级特性-多线程,GUI
查看>>
android在线播放音乐
查看>>
怎样使一个Android应用不被杀死?(整理)
查看>>
Linux:检查当前运行级别的五种方法
查看>>
在一台机器上搭建多个redis实例
查看>>
Oracle常用查看表结构命令
查看>>
shell练习四
查看>>
十进制转化为十六进制分割高低位
查看>>
使用Spock框架进行单元测试
查看>>
分布式RPC实践--Dubbo基础篇
查看>>
我的友情链接
查看>>
Linux下SVN服务器支持Apache的http和svnserve独立服务器
查看>>
再测Golang的JSON库
查看>>
IDE set arguments
查看>>
Javascript 检查一组 radio 中的哪一个被勾选
查看>>
课程第五天内容《基础交换 五》
查看>>