路由懒加载

87 阅读1分钟

背景

  • 当打包构建时候,js包会变的非常大,影响页面加载,出现短暂白屏。
  • 如果能把不同路由对应的组件分割成不同的代码块,单独打包,然后路由被访问的时候,才加载对应组件,这样就更加高效了

image.png 上图是脚手架打包出来的结果,我们发现在static下有js和css区分,以及外层的index.html(引用打包后的js和css)。其中js有三类包,作用如上阐述。其中app.[hash:32].js就是业务相关的,这个包可以在根据路由切割。

路由懒加载做了什么?

  • 把自己开发的业务代码,根据路由打包在不同的js中。
  • 只有这个路由被访问,才加载对应的组件。

路由懒加载效果

非懒加载:

image.png

image.png

懒加载 写法,路由引入方式变化:

image.png 打包出的js:

image.png 一开始不加载0,1,2,只加载vendor,manifest和app(app.vue主页没有懒加载,所以也是一开始下载,但是其他嵌套组件没打包在这其中)

本地运行,发现启动8080,首先下载的资源是:app.js和1.js,app.js是app.vue组件相关。1.js是首页重定向到home,home组件的下载。

image.png

再点击 “关于” 和“用户”,对应路由下的组件打包出的js才被挨个加载出来

image.png

image.png