Модуль 12 · Урок 45
ES modules і dependency graph
Module робить dependencies явними: entry point імпортує мінімальний public API, internal bindings лишаються scoped, а browser резолвить relative specifier як URL відносно importing module.
Browser module contract
<script type="module" src="/src/main.js"></script>
import { loadBooks } from './transport.js';
export function loadBooks() { /* ... */ }Module scripts мають strict mode, deferred execution і власний scope; imported binding є live read-only view. У browser relative specifier потребує коректного path/case/extension і local HTTP server: file:// не є надійним test environment.
Graph, API і side effects
Default export допустимий, але named API краще показує контракт. Namespace import потрібний для grouped API, re-export — для deliberate facade, dynamic import() — для conditional/lazy boundary. Side-effect imports і cycles документують або усувають.
Практика
Заповніть dependency graph, module API register і resolution cases. Acceptance: немає hidden globals/cycles, internal binding не export «про запас», а wrong case/missing extension відтворено через Network/Console evidence.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.