Angular 21 — конспекты pipeline «сборка → старт → выполнение»

Версия 21.0.3 · standalone · zoneless по умолчанию · builder @angular/build (esbuild/vite).

Материал: исходники в ../../src-v21 (тег 21.0.3) + demo-приложение ../../apps/demo21 (минимальный компонент: signal/computed, @if, @for, event-binding) + живые трейсы профайлера с ng serve.

  1. 01-compile.md — AOT/Ivy (индекс). Разбит на фокусные заметки в compile/: 00-overview (JIT/AOT, app-full vs lib-partial, bundler), 01-full-pipeline (7 стадий: AST→IR→фазы→ reify→emit→defineComponent), 02-partial-ivy-and-linker (библиотеки + linker), 03-build-tooling (webpack vs esbuild/vite), 04-ssr-ssg (SSR/SSG: 2-й server-бандл + prerender + hydration; компиляция компонентов та же). Карта потока — pipeline.canvas.
  2. 02-bootstrap.md — старт: bootstrapApplication → injectors → инициализаторы → ApplicationRef.bootstrap → первый рендер.
  3. 03-runtime.md — выполнение: zoneless change detection, tick → synchronize → detectChanges, живые profiler-трейсы кликов. Подзаметка runtime/01-cd-strategies.md — матрица Default/OnPush × zone.js/zoneless (две оси: кто будит tick vs какие view рефрешатся). Подзаметки по устройству view: runtime/02-view-data-structures.md (LView/TView/TNode/LContainer, __ngContext__), runtime/03-selector-matching.md (как Angular находит селекторы и привязывает директивы: compile-time реестр → bootstrap selectRootElement → create-проход findDirectiveDefMatches + host-биндинги), runtime/04-portals-and-dynamic-views.md (TemplateRef/ViewContainerRef/createComponent + CDK Portal как фасад).

Главные «v21-специфичные» факты (для будущих дельт к v18/v14)

  • zoneless по умолчанию: internalCreateApplication подставляет provideZonelessChangeDetectionInternal(); в ng new нет polyfills/zone.js.
  • Инструкции переименованы в ɵɵdomElement* / ɵɵdomListener (в v14–v18 были ɵɵelement* / ɵɵlistener).
  • Control flow @if/@for компилируется в ɵɵconditional* / ɵɵrepeater* (в v14 этого синтаксиса не было — были *ngIf/*ngFor со структурными директивами).
  • Builder esbuild/vite (в v14 был webpack), тесты на vitest (в v14 karma/jasmine).