学习库JavaScriptModules

Modules

Split code into explicit, reusable boundaries with imports and exports.

更新于 适用于 ECMAScript 2026

Modules give each file its own scope and make dependencies explicit. A good module exposes a small public surface and hides its implementation details.

Named exports

progress.js
export function percent(completed, total) {
  return total > 0 ? Math.round((completed / total) * 100) : 0;
}

export const completeLabel = "Complete";
app.js
import { percent, completeLabel } from "./progress.js";

console.log(percent(6, 8), completeLabel);

In browsers, relative module paths include the file extension. Load the entry file with <script type="module">.

Default exports

course-store.js
export default class CourseStore {
  courses = [];
}

Each module may have one default export. Named exports make refactoring and auto-imports more predictable, so they are a strong default for shared libraries.

Design module boundaries

Group code by capability rather than by vague type. A progress module can own calculation, serialization, and tests for progress instead of spreading those functions across generic utils files.

Keep this

Use modules by default, expose only what callers need, prefer cohesive boundaries, and keep dependency direction clear.

学习位置已保存在此设备上。