CommonJS-模块与ES模块简单了解与区别
warning:
这篇文章距离上次修改已过192天,其中的内容可能已经有所变动。
CommonJS 和 ES6 模块 (也被称为 ES Modules) 是两种不同的JavaScript模块规范。
CommonJS:
- 同步加载模块,一旦代码执行到require语句,就会立即加载模块。
- 模块导出的是值的复制,改变模块内部的值不会影响导出的值。
- 通常在服务器端使用,如Node.js,因为同步加载不会阻塞事件循环。
ES6 模块:
- 异步加载模块,只有在运行到import语句时才会加载模块。
- 模块导出的是值的引用,模块内部值的改变会反映在导出的值上。
- 支持默认导出和多个导出,导入时可以自定义名称。
- 通常在客户端使用,以便于代码分割。
CommonJS 示例:
// 模块文件 math.js
exports.add = function(a, b) {
return a + b;
};
// 引用模块
const math = require('./math.js');
console.log(math.add(2, 3)); // 输出: 5
ES6 模块 示例:
// 模块文件 math.js
export function add(a, b) {
return a + b;
};
// 引用模块
import { add } from './math.js';
console.log(add(2, 3)); // 输出: 5
两者的主要区别在于加载机制和值的导出方式,以及它们在不同环境下的使用场景。
评论已关闭