背景
- 当打包构建时候,js包会变的非常大,影响页面加载,出现短暂白屏。
- 如果能把不同路由对应的组件分割成不同的代码块,单独打包,然后路由被访问的时候,才加载对应组件,这样就更加高效了
上图是脚手架打包出来的结果,我们发现在static下有js和css区分,以及外层的index.html(引用打包后的js和css)。其中js有三类包,作用如上阐述。其中app.[hash:32].js就是业务相关的,这个包可以在根据路由切割。
路由懒加载做了什么?
- 把自己开发的业务代码,根据路由打包在不同的js中。
- 只有这个路由被访问,才加载对应的组件。
路由懒加载效果
非懒加载:
懒加载 写法,路由引入方式变化:
打包出的js:
一开始不加载0,1,2,只加载vendor,manifest和app(app.vue主页没有懒加载,所以也是一开始下载,但是其他嵌套组件没打包在这其中)
本地运行,发现启动8080,首先下载的资源是:app.js和1.js,app.js是app.vue组件相关。1.js是首页重定向到home,home组件的下载。
再点击 “关于” 和“用户”,对应路由下的组件打包出的js才被挨个加载出来