JavaScript模块是ES6起原生支持的代码组织方式,通过import/export实现作用域隔离与复用;需注意默认导出唯一、命名导出需大括号、路径规则及静态解析限制。
JavaScript 模块是将代码拆分为独立、可复用单元的方式,每个模块拥有自己的作用域,不会污染全局环境。从 ES6(ES2015)开始,原生支持 import 和 export 语法,这是现代 JavaScript 开发的标准模块机制。
模块文件默认处于严格模式,顶层的 this 是 undefined;变量、函数、类等不会自动挂到全局对象上。只有显式导出的内容才能被其他模块使用。
export const/name/function/class)export default).js)或以 /、./、../ 开头,否则会被当作内置模块或包名处理用 export 关键字暴露变量、函数、类等,供其他模块导入。
export const PI = 3.14;
export function add(a, b) { return a + b; }
export { PI, add };
expo
rt { add as sum };
export default function greet() { return 'Hello'; }
用 import 从其他模块加载导出项,注意浏览器中需在 中使用。
import { PI, add } from './math.js';
import { add as sum } from './math.js';
import * as math from './math.js'; → 用 math.PI 访问import greet from './greet.js';(无需大括号)import greet, { PI } from './greet.js';
模块是静态解析的——import 必须写在顶层,不能放在条件语句或函数内;动态导入可用 import() 函数(返回 Promise),适合按需加载。
"type": "module" 字段或用 .mjs 后缀type="module" 的 script 标签无法使用 import/export基本上就这些。模块让代码更清晰、可维护,也方便配合打包工具或原生支持做优化。不复杂但容易忽略细节,比如路径写法或默认/命名导出混用时的语法差异。