推荐答案
在 JavaScript 中,常用的模块化方案有以下几种:
CommonJS
- 主要用于 Node.js 环境。
- 使用
require
导入模块,module.exports
导出模块。 - 示例:
// 导出模块 module.exports = { add: (a, b) => a + b, }; // 导入模块 const math = require('./math'); console.log(math.add(2, 3)); // 输出 5
AMD (Asynchronous Module Definition)
- 主要用于浏览器环境,支持异步加载模块。
- 使用
define
定义模块,require
加载模块。 - 示例:
-- -------------------- ---- ------- -- ---- ---------------------- -------------------- - ------ - ---- --- -- -- - - -- -- --- -- ---- ----------------- -------------- - ----------------------- ---- -- -- - ---
UMD (Universal Module Definition)
- 兼容 CommonJS 和 AMD,同时支持全局变量方式。
- 示例:
-- -------------------- ---- ------- --------- ------ -------- - -- ------- ------ --- ---------- -- ----------- - -- --- ---------------------- --------- - ---- -- ------- ------- --- --------- - -- -------- -------------- - ------------------------------- - ---- - -- ---- ------------- - ------------------------- - ------- -------- ------------ - ------ - ---- --- -- -- - - -- -- ----
ES Modules (ESM)
- 现代 JavaScript 标准,支持静态分析和异步加载。
- 使用
import
导入模块,export
导出模块。 - 示例:
// 导出模块 export const add = (a, b) => a + b; // 导入模块 import { add } from './math.js'; console.log(add(2, 3)); // 输出 5
本题详细解读
CommonJS
- 适用场景:Node.js 环境。
- 特点:同步加载模块,适合服务器端开发。
- 缺点:不支持浏览器环境中的异步加载。
AMD
- 适用场景:浏览器环境。
- 特点:异步加载模块,适合需要动态加载的场景。
- 缺点:语法相对复杂,不适合 Node.js 环境。
UMD
- 适用场景:兼容多种环境(浏览器、Node.js)。
- 特点:通过条件判断支持 CommonJS 和 AMD,同时支持全局变量。
- 缺点:代码复杂度较高。
ES Modules
- 适用场景:现代 JavaScript 开发(浏览器和 Node.js)。
- 特点:静态分析支持,异步加载,语法简洁。
- 缺点:需要现代环境支持(如浏览器或 Node.js 12+)。