51CTO首页
AI.x社区
博客
学堂
精品班
直播训练营
企业培训
鸿蒙开发者社区
WOT技术大会
AIGC创新中国行
公众号矩阵
移动端

分析网页 JavaScript Bundles 的几种方法

开发 前端
分析你网页中的 JavaScript Bundles 大小,并限制网页中的 JavaScript 数量,可以减少浏览器花费在解析、编译和执行 JavaScript 的时间。本文我们来一起看看分析网页中 JavaScript Bundles 的几种方法。

分析你网页中的 JavaScript Bundles 大小,并限制网页中的 JavaScript 数量,可以减少浏览器花费在解析、编译和执行 JavaScript 的时间。这可以加快浏览器可以开始响应用户交互行为的速度,从而改善 First Input Delay、Largest Contentful Paint 等几个重要的性能指标。

本文我们来一起看看分析网页中 JavaScript Bundles 的几种方法。

查看 JavaScript 文件

使用 Chrome Devtools 中的 Network 看板是查看页面上下载所有 JavaScript 最简单的方法。

按 Ctrl+Shift+J 或在Mac上 Command+Options+J 打开 Devtools:

然后打开 Network 看板,在看板处于打开状态下重新刷新页面,并点击 JS 筛选项筛选出所有 JavaScript 文件。

可以看到,这是一个很简单的网页,里面的代码执行逻辑也很简单,但是如果是一个把所有依赖和代码逻辑都打包在一起的JS文件就不会这么容易分析了,里面的逻辑会非常混乱,你会很难看出里面的代码逻辑。

下面是一个将许多第三方库和本身站点的js模块打包到一起的网站:

下面我们来看看分析这种代码的方法:

Show Coverage

按 Ctrl+Shift+P 或在Mac上 Command+Options+PP 打开命令菜单,搜索 Coverage然后选择 Show Coverage 命令:

然后重新加载网页,在下拉菜单中选择 JavaScript:

在表格中,我们可以很明确的看到每个文件有多少未使用的 JavaScript,你还可以单击任何 URL 进行逐行查看分析。

Webpack

尽管上面的方法能让我们看到有多少未使用的 JavaScript 但是要分析组成 Bundles的模块仍然不容易。

如果你已经在你的网站上打包JS了,那么你肯定使用了 webpack、rpllup 等模块打包器,其中很多的工具都为我们提供了分析模块的非常好的方式。

让我们看一个例子,如果你在用 Webpack,那么你可以生成一个 stats.json 的文件,其中包含所有打包模块的统计信息。

虽然直接看这个文件也能看出有哪些模块,但是社区的一些工具能够帮我们更好的对模块信息进行可视化分析:

比如 webpack-bundle-analyzer,它通过分析 Webpack 打包后的产物,将其映射到 stats.json 的模块名称,然后就创建出了打包产物的交互式树形可视化。显示了每个模块的大小、Gzip解析大小以及彼此之间的关系。

SourceMap

这些打包器提供的可视化工具很棒,但是它们都属于打包器特定的工具,对于任何网站,无论使用任何打包器,都可以用 SourceMap 将打包后的代码还原成原始代码。这非常有用,因为它可以使我们在构建过程中经过混淆和转换的代码仍然可以被还原。

在压缩或打包后的 JavaScript 文件中,通过注释指向 SourceMap 文件的位置。

所有比较新的浏览器都支持源映射,使用 Chrome,你可以在 Devtools 中启用它:

当 Chrome 检测到可用的 SourceMap 时,可以还原源代码:

source-map-expoler

source-map-expoler 可以通过 SourceMap 生成打包产物的树形可视化关系,通过查看这些模块关系,我们可以发现一些问题:

比如上面的 moment、lodash 两个库,占整个文件的比重非常大,它们的大小远远超出它们的使用价值,我们可以将它们都转换成 ES 模块,则它们可以变的更小更优化。

Lighthouse

使用 Lighthouse,同样可以通过 SourceMap 分析我们打包产物中未使用的 JavaScript 代码。

另外还有一个正在探索中的功能,可以利用 SourceMap 分析打包产物中在新浏览器不需要的 polifill 代码。

以上就是几种分析 JavaScript 打包产物的工具和方法,赶快用起来去优化你的 JavaScript 打包产物吧!

 

责任编辑:赵宁宁 来源: code秘密花园
相关推荐
详解LINQ to JavaScript几种方法
本文将为大家介绍LINQtoJavaScript的几种方法,希望通过本文能对大家用好数据链接有所帮助。

2010-06-03 08:55:43

LINQ
JavaScript 中替换字符串几种方法
替换字符串中的文本是JavaScript开发中的常见任务。本文研究几种用replace和正则表达式替换文本的方法。

2020-10-16 18:35:53

JavaScript 字符串 正则表达式
Javascript应用-Js在页面中被引入几种方法
javaScript是一种解释型语言,它的执行是自上而下,但是各个浏览器对于至上而下的理解是有细微差别的,而代码的上下游也就是程序流又对于程序正确至关重要。

2021-11-05 21:36:59

JavaScript 语言 开发
iPhone图片拉伸几种方法
UIImageResizingModeTile和UIImageResizingModeStretch两种模式,从名字就可以看出,是平铺模式和拉伸模式。平铺就是复制你Insets指定的矩形区域块来填充你所指定的图片区域,而拉伸就是通过拉伸你Insets指定的矩形区域块来填充你所需的图片区域。

2013-08-21 11:31:21

iPhone 图片 方法
Springboot优雅停止服务几种方法
在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill9直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。

2020-01-10 16:23:44

Springboot 停止服务 Java
详解PHP实现MVC几种方法
这里将介绍PHP实现MVC的几种方法,使用面向对象的方式来实现MVC模式,将为我们梳理程序的架构提供一个清晰的思路。

2009-09-09 11:24:46

PHP实现MVC
介绍设置Session失效几种方法
我们设置SESSION失效的时间,是为了确保在用户长时间不与服务器交互的情况下,可以自动退出登录。本文介绍了三种设置SESSION失效的方法,希望对你有帮助,一起来看。

2011-06-16 10:48:33

session
Shell入门_去掉空行几种方法
接下来是主题,做嵌入式软件开发偶尔要收集和分析log,有时为了格式化输出需要删除掉多余的空白行,我挑选了几个简短且容易理解的方法分享给大家。

2021-02-26 13:20:48

Shell 空行 Linux
C#隐藏窗口几种方法
隐藏窗口即要求在程序启动的时候主窗口隐藏,只在系统托盘里显示一个图标。本文就详细介绍了c隐藏窗口的三种方法。

2009-08-31 09:19:31

c#隐藏窗口
MySQL常用操作几种方法
我们今天主要向大家讲述的是MySQL常用操作的几种方法,其中也包括了相关的实际应用代码的描述,以下就是文章的详细内容介绍。

2010-05-17 15:17:06

MySQL常用操作
实现远程攻击几种方法
如果匿名FTP主目录可写,可以写一个".forward"文件;文件内容是一行用双引号引起来的Shell命令;".forward"文件是用于邮件转发的。

2009-09-18 12:29:55

Spring中获取request几种方法,及其线程安全性分析
本文将介绍在SpringMVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性。

2018-06-12 09:49:44

Java Spring 线程
Web前端绘制0.5像素几种方法
最近完成了公司安排的移动web触屏开发,期间涉及到在移动设备上显示线条,最开始采用PC常用的cssboard属性来显示1个像素的线条,但是发现在移动设备上并不美观,参考淘宝、京东的触屏发现它们均是采用浅细的线条来显示在移动设备上。

2015-10-12 11:06:36

Web 前端 0.5像素
MySQL5.7设置变量几种方法
本篇带给大家MySQL5.7设置变量的几种方法,希望对你有所帮助!

2022-02-17 09:12:55

MySQL 数据库 设置变量
提高ASP.NET性能几种方法
本文介绍提高ASP.NET性能的几种方法,包括优化Web服务器计算机和特定应用程序的配置文件以符合您的特定需要等。

2009-07-20 17:07:30

提高ASP.NET性能
揭露黑客进行域名劫持几种方法
域名盗窃,也叫做域名劫持,不是新技术。早在2005年,SSAC报告就指出了多起域名劫持事件。域名劫持被定义为:从域名持有者获得非法域名的控制权。本文介绍了域名劫持的几种技术。

2012-12-05 13:54:54

玩转C++语言几种方法
正如大家所知,C的语法与C++非常相似,实现从C++语言向C的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。

2010-01-22 14:46:25

C++语言
Web Services使用多态几种方法
WebServices可以支持多态,不过仅仅限制在可以直接引用WebServices的时候,本文也只是起到抛砖引玉的效果。

2010-10-26 09:23:03

Web Service
实现Unix终端打印几种方法
在文章中,我们知道Unix环境下终端打印是在操作系统的支持下,使用终端自身提供的功能,用命令或程序实现Unix终端打印。

2010-04-30 16:22:07

Unix终端
Python中删除文件几种方法
在本文中,我们学习了Python删除文件的各种方法。使用Python删除文件或文件夹的语法非常简单。但是,请注意,一旦执行上述命令,您的文件或文件夹将被永久删除。

2021-03-08 09:32:04

Python 文件 命令

资讯网我终于抢救了他们的脑子参观公司展厅观后感如何解决梦魇周易六爻占卜大全黔江网站设计安全警示片观后感周易新注本义于起名男孩2018男孩起名缺金缺土空调公司起名取名起名大全五行为金的字近年比较好看的电视剧seo整站优化怎么做农历五行八字算命韩文网站建设摸臀杀网站制作一般要多钱起姓名测试打分生辰1518重庆整合营销推广苏州网站高端设计好先生养生锤价格dnfextractor英文网站 起名烟台网站seo优化酒的商标起名大全李鼠年起名字宝宝生辰八字起名软件下载给小孩起名字姓李周公解梦摘黄瓜手机网站如何免费制作少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化