JavaScript模块通过export/import实现代码封装与复用,具独立作用域、严格模式、单次执行等特性;支持命名导出、默认导出及对应导入方式,需模块环境运行。
JavaScript模块是一套组织代码的方式,让变量、函数、类等只在需要的地方暴露,避免全局污染和命名冲突。ES6(ECMAScript 2015)正式引入 export 和 import 语法,成为现代前端开发的标准模块机制。
每个模块拥有独立的作用域,顶层声明的变量不会自动挂到全局;模块默认是严格模式;模块代码只执行一次,多次导入也只初始化一次(有缓存)。
一个模块可以导出多个东西,方式有两种:
export 关键字修饰声明,可导出多个,名字必须与定义一致。export const PI = 3.14;
export function add(a, b) { return a+ b; }
export class Calculator { ... }
export default function greet(name) { return `Hello, ${name}`; }
导入方式需与导出方式匹配:
{},名字必须完全一致(可重命名用 as)import { PI, add } from './math.js';
import { add as sum } from './math.js';import greet from './greeting.js';
import defaultExport, { namedExport } from '...'import calc, { PI } from './calculator.js';
import * as utils from './utils.js'; // utils.PI, utils.add
模块语法只在模块环境生效,脚本需显式声明 type="module":
Node.js 中需文件后缀为 .mjs 或 package.json 中设置 "type": "module"。
不能在非模块脚本中直接用 import/export;动态导入可用 import('./module.js') 返回 Promise,适合按需加载。
基本上就这些。掌握 export/import 的组合方式,就能清晰拆分逻辑、复用代码、管理依赖。