为原生 ESM 时代做好准备

你可能已经写了很多年 ES Module (ESM) 语法的代码。比如:

import React from 'react';

但实际上,大部分 ESM 语法代码是被打包或转译成 CommonJS (CJS) 来执行的。因为以前 Node.js 和各类开发工具并不能很好地执行 ESM 模块。

但是到了 2025 年,ESM 兼容性已经有了巨大的提升,生态也有了长足的发展。各位 Node.js 和 Web 开发者们,即将迎来 CJS 向 ESM 迁移的大变革。

运行时兼容性

Node.js 20.11 增加了对 import.meta.dirname 的支持,相当于 CJS 中的 __dirname,是一个非常重要的特性。这个版本之后,Node.js 代码从 CJS 迁移 ESM 就变得更简单了。

Chrome 91 增加了对 Service Worker 中的 ESM 支持,完成了最后一块拼图。因此推荐 Chrome 91 以上。如果项目不使用 Service Worker 和 Web Worker,那么只要是 Chrome 66 (增加了 <link rel="modulepreload"> 支持)以上就能完美运行原生 ESM 代码。

Safari 15 就支持了大部分 ESM 特性,包括 Service Worker 的 ESM,但是 <link rel="modulepreload"> 支持需要 17 以上。


📅

📁

🏷️

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理