Roadmap › JavaScript (ES5 → ES2025) & TypeScript Basics › Module: Core Concepts
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.