专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
阿里云云栖号  ·  亚太唯一!阿里云Serverless计算产品 ... ·  10 小时前  
码农翻身  ·  强烈建议尽快搞个软考证!(重大利好) ·  17 小时前  
51CTO官微  ·  4 年融资 1 ... ·  昨天  
玉伯  ·  欢迎试用,过几天正式发布 0.3 ... ·  2 天前  
51好读  ›  专栏  ›  OSC开源社区

这款“锈化”的开源JS打包工具发布1.0 Beta——性能强劲、尤雨溪主导

OSC开源社区  · 公众号  · 程序员  · 2024-12-27 17:02

主要观点总结

Rolldown是一款基于Rust开发的现代化打包工具,旨在提供高效、便捷的开发体验。它是尤雨溪公司投资的Vite基建开源项目,兼容Rollup的API和插件接口。文章探讨了为何Web应用仍需要打包器,并详细阐述了打包器如何通过减少网络请求、减少总字节数和提高JS执行性能来优化Web应用性能。同时介绍了Rolldown的发布及特点。

关键观点总结

关键观点1: Rolldown是一款使用Rust开发的现代化打包工具,兼容Rollup的API和插件接口。

Rolldown作为尤雨溪公司投资的Vite基建开源项目,旨在提供高效、便捷的开发体验。

关键观点2: Web应用仍需要打包器的原因。

文章探讨了为何现代浏览器普遍支持原生ESM模块和HTTP/2的情况下,部分开发者提倡非打包方案。但Rolldown团队认为打包器对于关注用户体验的性能敏感型应用仍不可或缺。

关键观点3: 打包器如何优化Web应用性能。

打包器通过减少网络请求、减少总字节数和提高JS执行性能三大方案来优化Web应用性能。具体介绍了这些方案是如何实施的,以及Rolldown在这方面的优势和特点。

关键观点4: Rolldown的发布及特点。

文章提到了Rolldown的发布版本,以及其作为Vite用户起点的优势,能够提供更加一致的打包体验,同时性能又比肩esbuild + rollup。


正文

请到「今天看啥」查看全文


此外,对于下列需求,非打包方案存在缺陷:

  • 使用现代 JS 特性,比如 ES6+、TS 或 JSX。
  • 使用打包器专属的优化,比如 tree-shaking(树摇)、代码分割或压缩。
  • 使用依赖构建的库或框架。
  • 发布源码未打包的 npm 依赖,导致请求过多。

JS 打包无用论的主要论点是构建时增加了复杂性,减慢了开发反馈循环。

02. 三大优化

本质上,打包器的存在是因为 Web 应用的独特限制:它们需要通过 网络 按需交付。

打包器可以通过 三大方案 来提高 Web 应用的性能:

1、减少网络请求和 waterfall(瀑布量)。
2、减少通过网络发送的总字节数。
3、提高 JS 的执行性能。

03. 减少网络请求

首先,使用 HTTP/2 协议并不意味着可以 不再关心 请求数量。

尽管 HTTP/2 理论上 支持无限多路复用,但浏览器/服务器对每个连接 最大并发流数量 的默认限制大约为 100。

每个网络请求在服务器和客户端上都有固定开销,比如请求头处理、TLS 加密、多路复用等。更多请求意味着更多服务器负载,而实际并发性受限于服务器提供模块文件的速度。

即使使用 HTTP/2,包含数千个未打包模块的应用仍然会导致严重的网络瓶颈。

深度导入链还会导致网络瀑布(waterfall),即浏览器需要多次网络往返才能获取整个模块图。

这可以在通过 modulepreload 指令来稍微缓解,但是生成这些指令需要工具支持,并且在  标签中使用数千个 modulepreload 指令会导致 HTML 本身膨胀,这又是另一个性能问题。

打包可以通过将数千个模块组合成服务器和浏览器都可以轻松处理的最佳数量的 chunk(组件块),减少此类开销。







请到「今天看啥」查看全文