Skip to content

ESM 与 CJS 的差异有哪些?

Posted on:2024年8月14日 at 14:20

ECMAScript Modules(ESM)和 CommonJS(CJS)是 JavaScript 中两种主要的模块系统,它们各有特点和差异。

1. 语法

2. 模块加载方式

3. 文件扩展名

4. 模块解析

5. 模块缓存

6. 默认导出

7. this 绑定

示例对比

ESM 示例:

// module.js
export const foo = 42;
export default function() { ... }

// main.js
import { foo } from './module.js';
import defaultExport from './module.js';

CJS 示例:

// module.js
const foo = 42;
module.exports = function() { ... };
module.exports.foo = foo;

// main.js
const module = require('./module.js');
const foo = module.foo;
const defaultExport = module;
原文转自:https://fe.ecool.fun/topic/2e201752-ecd3-4420-9d6e-df58b43e25ee