JavaScript模块是封装变量、函数或类的独立代码单元,通过import/export机制交互,避免全局污染;默认严格模式,有独立作用域,仅执行一次;支持命名导出/导入、默认导出/导入、混合导入及整体导入;浏览器需type="module",Node.js需.mjs或"type":"module"。
JavaScript模块是一段可独立运行、封装了变量、函数或类的代码单元,它通过明确的导入(import)和导出(export)机制与其他代码交互,避免全局污染,提升复用性和可维护性。
模块默认是严格模式,顶层的 this 是 undefined;每个模块拥有自己的作用域,变量不会自动挂到全局;模块只执行一次,多次导入仍共享同一份实例。
导出有命名导出和默认导出两种方式,可混合使用:
export const PI = 3.14;export function add(a, b) { return a + b; }export { add as sum }; // 重命名导出
export default function greet() { return 'Hello'; }export default class User { ... }
导入必须在模块顶层(不能在条件或函数内),常见写法如下:
import { PI, add } from './math.js';import { add as sum } from './math.js';
import greet from './utils.js';import MyUser from './user.js';
impo
rt greet, { PI, add } from './math.js';
import * as math from './math.js';console.log(math.PI, math.add(2, 3));
浏览器中使用模块需加 type="module":
Node.js 中需将文件后缀设为 .mjs 或在 package.json 中设置 "type": "module"。动态导入可用 import('./module.js') 返回 Promise,适合按需加载。
基本上就这些。模块不是语法糖,而是 JavaScript 官方标准的组织方式,用对了能让项目结构更清晰、协作更顺畅。