vuecli3项目中webpack4配置(四)懒加载及Prefetch/Preload

栏目: 编程语言 · 发布时间: 6年前

内容简介:懒加载或“按需”加载是优化站点或应用程序的一个好方法。这种实践基本上涉及到在逻辑断点处拆分代码,然后在用户完成需要新代码块的操作后加载它。这会加速应用程序的初始负载,并减轻其整体重量,因为某些块甚至可能永远不会加载。懒加载并不是webpack才有的,只不过是webpack支持这种懒加载的编码方式。拿官网例子来说:增加print.js文件

懒加载或“按需”加载是优化站点或应用程序的一个好方法。这种实践基本上涉及到在逻辑断点处拆分代码,然后在用户完成需要新代码块的操作后加载它。这会加速应用程序的初始负载,并减轻其整体重量,因为某些块甚至可能永远不会加载。懒加载并不是webpack才有的,只不过是webpack支持这种懒加载的编码方式。

拿官网例子来说:

增加print.js文件

webpack-demo
|- package.json
|- webpack.config.js
|- /dist
|- /src
  |- index.js
+ |- print.js
|- /node_modules
复制代码

print.js

console.log('The print.js module has loaded! See the network tab in dev tools...');
export default () => {
  console.log('Button Clicked: Here\'s "some text"!');
};
复制代码

index.js

import _ from 'lodash';
function component() {
	const element = document.createElement('div');
	const button = document.createElement('button');
	const br = document.createElement('br');
	button.innerHTML = 'Click me and look at the console!';
	element.innerHTML = _.join(['Hello', 'webpack'], ' ');
	element.appendChild(br);
	element.appendChild(button);
	button.onclick = e => import(/* webpackChunkName: "print" */ './print').then(module => {
            const print = module.default;
            print();
        });
        return element;
}
document.body.appendChild(component());
复制代码

打包结果:

Asset       Size      Chunks          Chunk Names
      bundle.js    559 KiB   index  [emitted]  index
     index.html  182 bytes          [emitted]
print.bundle.js  643 bytes   print  [emitted]  print
复制代码

运行index.html查看Network,只加载了bundle.js文件,点击按钮时才会加载print.bundle.js文件。通过import的语法实现了懒加载。

如果print.bundle.js文件比较大,那么当我们点击按钮时,会有一定的延迟,这样虽然首屏加载时间变短了但是影响了用户体验,此时我们可以用Prefetch来解决这种问题。

Prefetch是告诉浏览器这是一个在未来可能使用到的资源。

浏览器通常会在空闲状态取得这些资源,在取得资源之后搁在HTTP缓存以便于实现将来的请求。如果有多个‘预请求提示’则会在浏览器空闲时排队执行。当浏览器离开空闲状态时正好在‘预请求’资源,那么浏览器会取消任何正在进行中的请求(同时会将部分响应数据放置在缓存中,而在Header中继续使用Content-Range字段 )并停止处理‘预请求’队列。 总之:在闲置时获取资源。

使用Prefetch很简单,仅在import时增加一条魔法注释即可:

修改index.js代码

button.onclick = e => import(/* webpackChunkName: "print", webpackPrefetch: true */ './print').then(module => {
      const print = module.default;
      print();
});
复制代码

再次打包,打包结果不变,此时重新运行index.html查看Network,发现浏览器除了bundle.js文件外还载最后加载了print.bundle.js文件,这个文件是浏览器在空闲状态下加载的。

点击按钮,浏览器又重新加载了一次print.bundle.js,这次加载是从浏览器缓存中获取的,所以时间较短。

vuecli3项目中webpack4配置(四)懒加载及Prefetch/Preload

通过这种懒加载+Prefetch的方式就实现了页面首次加载只需要加载自己所需要的资源,其他资源在需要时再去获取的功能,优化了页面加载速度。在我们之后的编码中可以尝试使用。

Preload为当前导航过程中可能需要资源。

preload指令与prefetch有很多不同之处:

preload的块开始与父块并行加载。prefetch在父块完成加载后开始。

preload的块具有中等优先级,可以立即下载。浏览器空闲时下载prefetch块。

父块应立即请求preload的块。prefetch可以在将来的任何时候使用。

浏览器支持不同。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

来吧!带你玩转 Excel VBA

来吧!带你玩转 Excel VBA

罗刚君、杨嘉恺 / 电子工业出版社 / 2013-7 / 85.00元

本书旨在普及Excel VBA 基础理论,以及通过VBA 的高级应用扩展Excel 的功能,提升读者的制表效率,解决工作中的疑难,同时亦可借此开发商业插件。 本书主要分为操作自动化引言篇、入门篇、进阶篇和疑难解答篇,覆盖从入门到提高的所有内容,以满足不同层次的读者需求。其中操作自动化引言篇简述了操作自动化的需求与方式,借此引出VBA 入门篇。VBA 入门篇包含第2 章到第13 章,主要介绍了......一起来看看 《来吧!带你玩转 Excel VBA》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具