全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-16 8 分钟 ✍️ juanwangdev

JavaScript 模块化(ES Modules)

ES Modules 是 JavaScript 官方模块标准,支持静态分析和 tree-shaking。

导出语法

命名导出

JavaScript
// 单个导出
export const name = 'Alice';
export function greet() { return 'Hello'; }
export class Person {}

// 批量导出
const age = 25;
const job = 'Engineer';
export { age, job };

// 重命名导出
export { age as userAge };

默认导出

JavaScript
export default function() {
  console.log('Default export');
}

// 等价于
function main() {}
export default main;

导入语法

命名导入

JavaScript
import { name, greet } from './module.js';
import { age as userAge } from './module.js';  // 重命名
import * as utils from './module.js';          // 全部导入

默认导入

JavaScript
import main from './module.js';
import main, { name, greet } from './module.js';  // 混合导入

动态导入

JavaScript
// 返回 Promise
const module = await import('./module.js');

// 条件加载
if (condition) {
  const { heavyFeature } = await import('./heavy.js');
}

导出导入结合

JavaScript
// 全部重新导出
export * from './utils.js';

// 部分重新导出
export { name, greet } from './module.js';

// 重命名导出
export { age as userAge } from './module.js';

模块特性

特性说明
严格模式自动启用 'use strict'
作用域模块内独立作用域,不污染全局
this 值模块顶层 thisundefined
执行时机导入的模块仅执行一次

循环依赖处理

JavaScript
// a.js
import { b } from './b.js';
export const a = 'a';

// b.js
import { a } from './a.js';
export const b = 'b';

循环依赖时,ES Modules 保留导入值的引用,但未初始化时访问会报错

浏览器中使用

HTML
<script type="module" src="./main.js"></script>
<script type="module">
  import { greet } from './utils.js';
  greet();
</script>

要点总结

  • export 导出,import 导入,语法静态可分析
  • 默认导出每个模块仅一个,命名导出可有多个
  • 动态导入 import() 返回 Promise,按需加载
  • 模块自动严格模式,顶层 this 为 undefined

📝 发现内容有误?点击此处直接编辑

← 上一篇 JavaScript 性能优化(内存管理、防抖节流)
下一篇 → JavaScript 生成器与迭代器
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库