大幅优化Vue单页面首屏加载速度

做Vue单页面经常遇到的一大问题就是首屏加载太慢,尽管首屏可能只是一个简单的登录页,可是也要下载几百k甚至上m的整个项目的代码。一个解决方法是使用Element-ui提供的按需加载组件,但是即便如此进步也不大,仍然是几百k。既然登录页这么简单,其实可以通过把登录页和其它部分分离成两个页面来解决,让用户可以迅速地看到登录页,然后在登录页里再慢慢后台下载其它代码。如何分离呢,经过半天的研究,发现可以使用webpack的多入口功能来实现。

1.修改webpack配置

在原先只有一个入口叫app的基础上,再加一个叫login的入口,指向另一个入口js文件;

既然是两个页面,那么原先只有一个的HtmlWebpackPlugin也需要再添加一个,并且filename和template改成登录页的;

HtmlWebpackPlugin默认会把所有资源放进html,为了去掉不需要的资源,需要在HtmlWebpackPlugin选项里分别添加excludeChunks: ['login']和excludeChunks: ['app'];

原先的某些CommonsChunkPlugin会导致报错,删掉只剩下一个manifest的CommonsChunkPlugin就好。

2.添加登录相关文件

添加之前配好的login入口文件,与app类似,但是去掉登录页不需要的东西,如用不到的组件和样式等;

添加login入口专用的router配置文件,去掉其他路由,只留下登录页一个就好:

只留登录路由

添加登录页的html模板,也是去掉登录里用不到的资源。

3.修改其他细节

登录完不是用vue-router的push方法,而是改成直接修改location.href跳到另一个页面;

去除原来app路由中的login;

登录页中可以使用隐藏的iframe等方式预加载app页面中的数据(猜想)。


至此,一个简洁清爽的不到100k的登录页面就诞生了,白屏时间也从5秒左右降到了1秒以内^_^

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,332评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,120评论 19 139
  • 之前在Sencha Cmd创建Ext JS示例项目演示了用Sencha Cmd来创建一个Login示例。在这里会演...
    写意悠悠阅读 12,925评论 4 24
  • 一 平时一说起“法盲”来,很多人会觉得法盲就是“不懂法的人”。其实,我觉得“不懂法的人”并不见得就是法盲。 仅就不...
    海客曰阅读 7,216评论 0 3
  • 四天前,我失恋了。 失恋第一天,我在复习科目一考试。 失恋第二天,一大早就去了考场参加考试。 失恋的第三天,我看了...
    野崎安生阅读 3,816评论 2 8

友情链接更多精彩内容