原文作者:Houssein Djirdeh

译者:UC 国际研发 Jothy

写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。

编者按:npm 为前端 er 带来了诸多便利,我们只需敲上一条安装语句,便能用上别人精心开发的各种精品库。但你有没有发现,你的应用悄悄地吃成了个“大胖子”?今天,我们请来 Google Web 的工程师 Djirdeh 带你科学“瘦身”,去掉那些“多余的热量”?。

npm 使得 JavaScript 世界焕发生机,你可以通过它轻松下载使用超过 50 万个公共包。 但很多时候,我们引入了库却没能充分利用它们。 要解决这个问题,你得分析你的 bundle,检测出未使用的代码,然后删除未使用及不需要的库。

分析你的 bundle

最简单的查看所有网络请求大小的方法是,在 DevTools 中打开 Network 面板,选择Disable cache(禁用缓存),然后重新加载页面。

DevTools 中的 Coverage 选项卡可显示应用中有多少未使用的 CSS 和 JS 代码。

通过 Lighthouse 的 Node CLI 为其指定一份完整的配置,便可以使用“Unused JavaScript(未使用的 JavaScript)”审查来追踪应用传输了多少未使用的代码。

如果刚好你的 bundler 是 Webpack,那么 Webpack Bundle Analyzer 插件将帮你分析 bundle 的组成(地址:github.com/webpack-con…

你只需像引入其它 Webpack 插件一样,在配置文件中引入该插件:

虽然我们比较经常使用 webpack 构建单页应用,但其他 bundler(如 Parcel 和 Rollup)也有分析 bundle 的可视化工具。

使用此插件重新加载应用后,你将看到整个包的可缩放树形图。

有了这个可视化功能,你就可以看出 bundle 的哪些部分比较大,并且更好地了解你要导入的所有库。 这能帮你确认你是否正在使用某些未使用或不必要的库。

删除未使用的库

在上面的树形图中, @firebase 域中有相当多的包。 如果你只需要 firebase 数据库组件,请将导入语句改为仅获取该文件:

不过需要强调的是,应用越大,此过程越复杂。

对于那些你非常确定其他地方并未使用的神秘兮兮的包,请退一步看看哪些顶层依赖项正在使用它。 试着做到只引入你需要的组件。如果某个库你不再使用,请将其删除。 如果初始页面的加载不需要某个库,考虑是否懒加载它。

删除不需要的库

不是所有的库都可以轻松分解并选择性地导入,在这些情况下,你得想清楚是否可以完全删除该库。 构建定制解决方案或换用更轻量级的方案始终是值得考虑的。 但是,在从应用中完全删除某库之前,你得权衡其中的复杂性和工作量。

好文推荐:

Redux作者从“UI工程要素”谈如何成为领域专家

“UC国际技术”致力于与你共享高质量的技术文章

欢迎关注我们的公众号、将文章分享给你的好友

一起来燃烧 Bundle 的“卡路里”相关推荐

  1. 人工智能灵魂注入,燃烧你的卡路里——2018,你AI了吗!?

    > 莫挨老子,老子只想做个安静的肥宅.所以,到底是谁动了我的肥宅快乐水? 炸鸡可乐蛋挞,烧烤火锅奶茶,游戏番剧代码,夕阳西下,阿宅瘫在沙发.面对高强度工作负荷带来的久坐.各种舌尖上的诱惑,以及一 ...

  2. 燃烧我的卡路里 ---- Flutter瘦内存瘦包之图片组件

    作者:闲鱼技术-炉军 背景 在电商类APP里,图片到现在为止仍然是最重要的信息承载媒介,不得不说逛淘宝的过程,其实就是一个看图片的过程.而商品详情页中的图片,通常是页面中内存占用最多的内容,占用了整个 ...

  3. 额~~燃烧我的卡路里!

    ! 幽默程序员 只有程序员才看得懂的幽默^.^

  4. 大脑数据可视化方法_使用r可视化大脑

    大脑数据可视化方法 介绍 (Introduction) Recently, I took an introductory psychology course in my first year of u ...

  5. python卡路里程序_通过步数和体重计算消耗的卡路里的公式是什么?

    展开全部 通过步数和体重计算消耗的卡路里32313133353236313431303231363533e59b9ee7ad9431333433633530的公式是:每分钟燃烧的卡路里= 0.0175 ...

  6. 用计算机弹卡路里简谱,[B]卡路里终极版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 卡路里的谱子,感觉有些歌词还是可以弹出来但是效果不好,所以还在研究,顺便说一下,这个谱子不是自拔,是在@墨墨文字控丶 的铺子上进行了修改,个人感觉现在改过 ...

  7. 卡路里音乐计算机谱,[B]卡路里终极版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 卡路里的谱子,感觉有些歌词还是可以弹出来但是效果不好,所以还在研究,顺便说一下,这个谱子不是自拔,是在@墨墨文字控丶 的铺子上进行了修改,个人感觉现在改过 ...

  8. python识别食物卡路里_手机中的黑科技:识别食物卡路里,让你合理规划自己的饮食...

    如今减肥已经成为人们的一个主流话题,甚至已经变成了日常生活习惯的一部分,很多人都有下班后去健身房锻炼的习惯. 但是3分练7分吃,在健身的同时,每日摄入的卡路里含量也要精打细算,只有两者共同作用下才能保 ...

  9. k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...

    众所周知,人类最近拍摄了首张黑洞照片.网友们纷纷表示,这明明就是一个甜甜圈嘛!以前以为黑洞是这个世界上最最高冷的存在,而此刻突然现出真身,形象却是如此的人畜无害!不但如此,还勾起了网友的食欲!简直是罪 ...

最新文章

  1. Eclipse安装Hadoop插件配置Hadoop开发环境
  2. 热修复框架AndFix【源码阅读】
  3. 计算机专业是否限制语种,高考日语选什么专业(如果高考选日语,大学选专业有什么限制)...
  4. 零基础学Python(第十三章 元组)
  5. 基于MaxCompute InformationSchema进行血缘关系分析
  6. CentOS防止黑客攻击Linux服务器实战演练
  7. 国货之光!百度飞桨与华为麒麟重磅合作
  8. 从青铜到王者的路线,javasocket编程聊天室
  9. C# Xamarin For Android移动开发基础进修篇
  10. YAPI,一个神奇的接口管理平台
  11. hp服务器系统降级,HP 服务器firmware 升级方法.pdf
  12. 协议软件服务器吗,使用开源协议软件搭建即时通讯服务器.doc
  13. php strict warning,PHP Warning: Unsupported declare 'strict_types' in ...
  14. Modbus功能码及错误码说明
  15. 神经复杂系统前沿:关于认知大脑的两种观念
  16. iOS开发长文--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
  17. php仿制网站,网站仿制合法吗,仿制别人网站注意事项
  18. 日文IT词汇的中文翻译
  19. Mysql从删库到跑路(1)
  20. 63名研究生的微信群被解散,导师发声:和你们没感情,江湖不见

热门文章

  1. 李笑来——最重要的能力(阅读总结)
  2. 无线WiFi安全渗透与防御(一):初识无线安全
  3. VsCode编辑器之shell脚本的编辑
  4. CSS实例—以一个简单网页为例
  5. Git-简单的利用SourceTree提交代码
  6. web开发基础,8个优秀的CSS实践
  7. LICEcap gif 录屏软件(推荐!!!)
  8. js编码规范(参考、推荐、强制 含eslint)
  9. UI设计自学很难学会吗?需要报班才能学会吗?
  10. 【Java】将中文转为驼峰式拼音