webpack之打包分析以及prefetching和preloading
打包分析:
https://webpack.js.org/guides/code-splitting/#bundle-analysis
性能优化使用缓存是很有限的,现在更多的应该是再编写代码时,考虑到代码的覆盖率,如何让页面加载的js文件利用率提高,有些交互后才能用到的代码可以写在异步组件里通过懒加载的形式,把这块的代码逻辑加载进来,这样就可以提高代码的性能,页面访问速度也会加快。如果感觉懒加载影响用户体验,这个时候就可以用prefetch。
预取/预加载模块 Prefetching/Preloading modules
webpack 4.6.0+增加了对预取和预加载的支持。
- 在声明您的导入时使用这些内联指令可以使webpack输出“ Resource Hint”,它告诉浏览器:
- prefetch(预取):将来可能需要一些导航资源
- preload(预加载):当前导航期间可能需要资源
简单的预取示例可以包含一个HomePage组件,该组件呈现一个LoginButton组件,然后按需LoginModal在单击后加载该组件。
LoginButton.js
//...
import(/* webpackPrefetch: true */ 'LoginModal');
这将导致将<link rel="prefetch" href="login-modal-chunk.js">其附加在页面的开头,这将指示浏览器在空闲时间预取login-modal-chunk.js文件。
一旦父块被加载,webpack将添加预取提示。
- 与Prefetch相比,Preload指令有很多区别:
- 预加载的块开始并行于父块加载。父块完成加载后,预取的块开始。
- 预加载的块具有中等优先级,可以立即下载。浏览器空闲时,将下载预提取的块。
- 父块应立即请求预加载的块。预取的块可以在将来的任何时候使用。
- 浏览器支持不同。
可以有一个简单的预加载示例,该示例Component始终依赖于应放在单独块中的大型库。
让我们想象一个ChartComponent需要巨大的组件ChartingLibrary。它显示了LoadingIndicator何时渲染,并立即按需导入ChartingLibrary:
ChartComponent.js
//...
import(/* webpackPreload: true */ 'ChartingLibrary');
当ChartComponent请求使用的页面时,也会通过来请求charting-library-chunk <link rel="preload">。假设页面块较小,并且完成速度更快,则页面将显示为LoadingIndicator,直到已经请求charting-library-chunk完成。这将增加一点加载时间,因为它只需要一个往返而不是两个。特别是在高延迟环境中。
错误地使用webpackPreload实际上会损害性能,因此在使用时要小心。
参考:https://webpack.js.org/guides/code-splitting/#bundle-analysis
webpack之打包分析以及prefetching和preloading的更多相关文章
- vue-cli@webpack@4打包分析命令
一.命令 npm run build --report 该命令在打包完之后,可以分析包的大小(如下图),从而分析那一块打包太大了可以进行优化处理.
- create-react-app 搭建的项目中,引入 webpack-bundle-analyzer 打包分析
安装npm intall webpack-bundle-analyzer --save-dev 在 config/webpack.config.prod.js 文件(推荐)或 config/webpa ...
- H264码流打包分析(精华)
H264码流打包分析 SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若 ...
- webpack独立打包与缓存处理
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 先前写了一篇webpack入门的文章<webpack入门必知必会>,简单介绍了webpa ...
- express整合webpack的打包文件dist
对于我来说,第一次接触前后端整合问题的小白,刚开始是一脸懵逼,这个问题整整坑了我一个晚上加一个早上,现在写出来总结: 前端开发:vue-cli+webpack: 后台开发:nodejs框架expres ...
- webpack 基本打包方法
webpack的打包基本配置文件webpack.config.js 可以在webpack.config.js里面写好配置:比如前章节所总结的四大核心 |-- add.js // 定义一个普通加法函数 ...
- webpack 单独打包指定JS文件(CopyWebpackPlugin)
背景: 不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改.因此,需要用webpack单独打包指定文件.npm install --save-dev ...
- webpack项目打包配置
webpack.config.js 文件中,其中“plugins”最为重要 var path = require("path"); const webpack = require( ...
- vue-cli、create-react-app 项目如何查看打包分析?
vue-cli.create-react-app 项目如何查看打包分析? 项目 如何查看打包分析 vue-cli 创建的项目 已经集成 webpack-bundle-analyzer,运行npm ru ...
随机推荐
- mysql高级复习
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构,可以简单理解为“排好序的快速查找数据结构”. 数据本身之外,数据库还维护着一 ...
- Java入门 - 语言基础 - 05.基本数据类型
原文地址:http://www.work100.net/training/java-basic-datatype.html 更多教程:光束云 - 免费课程 基本数据类型 序号 文内章节 视频 1 概述 ...
- .net core appsetting/获取配置文件
修改appsetting 最近用Identity4所以需要做一个配置项项目 { "Logging": { "IncludeScopes": false, &qu ...
- BZOJ 3513 idiots
题目传送门 分析: FFT一手统计两根棍子相加的方案 然后一个值2S可能会被同一根S自己乘自己得到 然后要减去 其次,A+B和B+A会被算成两种方案,所以还要除以2 然后不太好算合法的方案数,但是非法 ...
- Nginx核心模块
error_log 语法:error_log file [ debug | info | notice | warn | error | crit ]默认值:${prefix}/logs/error. ...
- 连接redis出现错误:Cannot get Jedis connection
错误信息: 错误描述:由于我的redis数据库没有设置密码,配置连接的时候我配置了密码为空,导致连接失败
- Idea-LifecycleException when deploying
案例 今天第一次用idea构建项目,出现了如下问题: FAIL - Application at context path /myWebApp could not be started FAIL - ...
- 【Nginx入门系列】第一章 手把手带你搭建Nginx服务器
1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境,搭建前请先按如下语句配置好环境. GCC 安装nginx需要先将官网下载的源码进行编译 ...
- React脚手架解决不能使用less问题
引言 学编程,还是多敲代码呀,React脚手架不支持less,因此需要配置webpack的webpack.config.js文件 释放配置文件 我们在使用React脚手架的时候,发现发现是没有webp ...
- Spring初识、新建工程
1.spring与三层架构的关系: spring负责管理项目中的所有对象,是一个一站式的框架,容器中的对象决定了spring的功能. 2.spring核心架构 Spring框架主要由六个模块组成,在开 ...