Lessons in this course (16)

10. Modules (ESM vs CommonJS)

IntermediateMediumLesson 10 of 16
js
// math.js (ES module)
export const PI = 3.14159;
export function area(r) { return PI * r * r; }
export default class Calculator {}

// app.js
import Calculator, { area, PI as pi } from "./math.js";
const { heavy } = await import("./heavy.js");          // dynamic import → code splitting

// CommonJS (Node legacy)
const fs = require("fs");
module.exports = { area };

ES modules: static structure (enables tree-shaking), strict mode by default, deferred in browsers (<script type="module">), top-level await, live bindings. CommonJS: synchronous require, used by older Node packages.