Angular 21 на пальцах — простой vault
Это вторая, упрощённая версия конспектов. Та же тема, что и в ../v21/
(«как Angular собирается, стартует и работает»), но объяснённая медленно, простыми
словами, с аналогиями, примерами и анимациями.
Если хочешь точную версию с исходниками и
file:line— иди в../v21/. Этот vault — чтобы понять идею, а не запомнить имена функций.
Один пример на весь vault
Везде используется один и тот же крошечный компонент (это реальный apps/demo21):
@Component({
selector: 'app-root',
template: `
<h1>{{ title }}</h1>
<p>Счётчик: {{ count() }}</p>
<p>Удвоенный: {{ doubled() }}</p>
<button (click)="inc()">+1</button>
@if (count() > 2) {
<p class="big">Больше двух!</p>
}
<ul>
@for (n of items(); track n) {
<li>{{ n }}</li>
}
</ul>
`,
})
export class App {
count = signal(0); // число, за которым следит Angular
doubled = computed(() => this.count() * 2); // само пересчитывается
items = computed(() => Array.from({length: this.count()}, (_, i) => i + 1));
inc() { this.count.update(c => c + 1); } // кнопка +1
}
Запомни его — дальше мы будем гонять именно этот счётчик по всем стадиям.
Порядок чтения (строго по шагам)
Читай сверху вниз — каждая глава опирается на предыдущую.
- 00 — Большая картина — 4 стадии за 5 минут. Аналогия фабрики.
- 01 — Компиляция — как твой HTML-шаблон превращается в JS-функцию.
- 02 — Build — зачем нужен сборщик и почему Angular ушёл на esbuild/vite.
- 03 — Bootstrap — как приложение запускается и рисует первый экран.
- 04 — Runtime и change detection — как клик по кнопке меняет цифру на экране.
- 05 — OnPush и zoneless — когда Angular проверяет компоненты, а когда нет.
- 06 — Что такое view, LView и TView — из чего «сделан» компонент в памяти.
- 07 — Как Angular находит селекторы — как он понимает, где какой компонент.
- 08 — Динамика и порталы — как контент появляется и переезжает на лету.
- 09 — DI на узлах — правда ли «инжектор на каждый элемент» и как
inject()находит сервис. - 10 — Встроенные директивы —
@if/@for/@switch,ngTemplateOutlet,ngClassи компания. - 11 — Жизненный цикл и afterRender — порядок хуков,
afterNextRender/afterRenderEffectи фазы. - 12 — Queries — как
viewChild/contentChildнаходят элемент и когда результат готов. - 13 — Content projection —
<ng-content>: контент переезжает, а не копируется. - 14 — Host bindings и host directives — управление своим тегом и «приклеивание» директив.
- 15 — Zoneless scheduler — что будит Angular и как из событий получается один tick.
В конце — огромная карта prosto.canvas: весь путь одним полотном с врезками-примерами.
Про «гифки»
Анимации лежат в assets/ как SVG и встроены прямо в главы — в Obsidian они
проигрываются сами (это и есть «гифки», только лёгкие и без записи экрана). Плюс
в тексте есть покадровые ASCII-анимации — читаешь сверху вниз как кадры.
Как читать карту в конце
Открой prosto.canvas в Obsidian. Поток идёт слева направо: код → компиляция →
сборка → старт → работа. Снизу — карточки-файлы (эти же главы), сверху — врезки с
мини-примерами. Стрелки показывают «что за чем».