周刊 04 期 - 前端工具链的洗牌

Summary from

前端生态快速发展,工具链效率显著提升,Rust 和 Go 的应用加速了编译过程。Oxlint 是一个由 Rust 开发的 JavaScript Lint 工具,速度比 ESLint 快 50 - 100 倍,但规则不支持配置,距离生产环境仍需完善。Bun 团队目标是到 2024 年取代 Node.js,更新频率高,力争占领市场。Vue 创始人 Evan You 总结了 Vue 3 的教训,认为应避免破坏性更改,以降低升级成本。

近几年,前端生态似乎在快的方向上高歌猛进,这里的快指的是工具链直观意义上的快。

得益于 Rust、Go 的闪电般的运行速度,浏览器支持原生 ES Module,使得前端的开发体验在效率上有了肉眼可见的提升。

从 esbuild、SWC 代替 Babel、TSC,从 Vite 代替 Webpack,两三年的时间内完成了编译速度的大跃进。

接下来也出现了 Turborepo ,旨在提升以 monorepo 为主的代码仓库构建,同样也是采用 Rust 编写,核心指标也是运行速度。

接下来也出现了下文提到的 Oxlint,将生态扩展到了 Linter、Resolver、Parser 这些更加细分的领域。可以看到在不远的将来,目前前端生态的工具链将无一幸免会被洗牌。

Oxlint

Oxlint 是一个由 Rust 编写的 JavaScript Lint 工具,来自 Oxc 项目。该项目包含了由 Rust 开发的用于前端项目工程化的工具,包含除了 Oxlint 之外,还提供了用于 TypeScript/JavaScript 的 Parser,以及用于 CJS/ESM 模块的 Resolver。

Oxlint 最大的特点就是速度快,根据 Benchmark 的结果,比 ESLint 快 50 - 100 倍。

Oxlint 开箱即用,内置 200 多条来自 eslint typescript eslint-plugin-react eslint-plugin-jest eslint-plugin-unicorn eslint-plugin-jsx-a11y 的规则,但目前不支持对规则进行配置。

Oxlint 除了提供给构建过程的二进制调用,也提供了 VSCode 的插件,在 IDE 上实时展示 Lint 错误。

Oxc 团队目前没有打算让 Oxlint 成为取代 Eslint 的工具,只是利用 Oxc 检查速度快的特点对 Lint Stage 进行增强。

个人觉得鉴于 Oxlint 的规则目前不能由开发者进行配置,所以会存在 Eslint 和 Oxlint 配置不统一的问题,这就会导致该工具距离生产环境可用还有一段距离,该工具还处于一个秀肌肉的阶段。

Bun 的 2024 年目标

Bun 团队给自己定了一个目的性非常强的目标,即在 2024 年取代 Node.js,成为后端的默认运行时。

从目前的 Changelog 来看,团队更新 Bun 的频率非常积极,几乎每周都有一个小版本的发布,非常积极地在修复问题、功能迭代以及完善生态。

如果保持这个势头下去,依靠 Runtime 的性能碾压,足以完成 Deno 所没能做到的,至少可以抢占一部分目前的 Node.js 市场。

Vue 的创始人通过 Vue 3 的艰辛经历学到了什么

Vue 3 的发布让创始人 Evan You 吸取了一些教训,但也导致了框架升级方式的重大变化。

文章总结了 Evan You 在 VueConf 上给与会者分享自己在 Vue 2 过渡到 Vue 3 的时候学到的一些艰难的教训。

Evan You 认为,当存在 Breaking Change 的时候,应该继续保持现有的 API 实现,并且在未来采用逐步废弃的方式。

对于开发者来说,升级 Vue 3 的体验绝对不好,太多的 Breaking Change 导致了升级成本一定是非常昂贵的。同样 Vue 的生态也会比较割裂,一些 Vue 生态的库会同时存在作用于 Vue 2 和 Vue 3 两个版本。