Angular
Angular: зачем фуллстек-фреймворк и где он в 2026
Октябрь 2010, Google. Мишко Хевери на спор переписывает внутренний проект из 17 тысяч строк за три недели в 1500 строк на своём пет-проекте AngularJS. Спор он выигрывает. Через шесть лет команда полностью выбрасывает AngularJS и выпускает несовместимый Angular 2 на TypeScript - сообщество в ярости. Ещё через девять лет, в ноябре 2025, выходит Angular 21: без Zone.js по умолчанию, на сигналах, с компонентами-сигналами и Vitest вместо Karma. Тот самый фреймворк, который много раз хоронили, держит банки, авиалинии и Google Cloud Console.
- Google: Ad Words, Google Cloud Console, Firebase Console и десятки внутренних панелей построены на Angular
- Microsoft Office Home и часть веб-интерфейсов Outlook используют Angular для сложных enterprise-экранов
- Deutsche Bank, UBS, BMW, Delta Airlines: крупные регулируемые компании выбирают Angular ради единого стиля в больших командах
- Forbes, PayPal, Samsung, Santander: продакшен-интерфейсы с долгим жизненным циклом и строгими требованиями
- Рынок труда: Angular годами держится в тройке фронтенд-фреймворков по спросу в enterprise-сегменте
Предварительные знания
- JavaScript на уровне функций, объектов, массивов и классов ES2015
- Базовое понимание TypeScript: типы, интерфейсы, декораторы хотя бы на уровне идеи
- Представление о DOM: браузер строит дерево элементов из HTML
- Идея состояния приложения - данные, которые меняются во времени
Как ставка на спор превратилась в фреймворк Google
Мишко Хевери и Адам Эйбронс начинают AngularJS как сторонний проект GetAngular - сервис для дизайнеров, верстающих формы. В 2009 Хевери, уже работая в Google над проектом Feedback, доказывает руководству, что на его подходе тот же продукт пишется в разы короче. Google усыновляет проект, и в 2010 AngularJS выходит в open source. Ключевая идея той эпохи - двусторонняя привязка данных и dirty checking через Zone.js. К 2014 становится ясно, что архитектура не тянет мобильные устройства и большие приложения. Команда принимает болезненное решение: переписать всё с нуля. Angular 2 (сентябрь 2016) несовместим с AngularJS, построен на TypeScript и компонентах. С тех пор фреймворк выпускает мажорные версии дважды в год и в 2023-2025 совершает второй разворот - переход на сигналы и отказ от Zone.js.
Фреймворк против библиотеки
Библиотека решает одну задачу и оставляет остальное на разработчика. React, например, отвечает за рендеринг UI, а роутинг, работу с сервером, формы и сборку команда выбирает сама из десятков пакетов. Фреймворк задаёт целостную систему: единый способ организовать код, готовые решения для типовых задач и набор правил. Angular - именно opinionated full framework: один официальный роутер, один HTTP-клиент, своя система форм, свой CLI и тестовый стек.
- Библиотека (например React) — Малое ядро для рендеринга. Роутер, HTTP, формы, состояние и сборку выбирает команда. Гибко, но решения и их совместимость на плечах разработчика
- Фреймворк (Angular) — Целостный набор: роутер, формы, HTTP, DI, CLI, тестирование. Меньше выбора, но единый стиль и предсказуемость в большой команде на годы вперёд
Слово opinionated значит, что фреймворк имеет мнение о том, как писать код, и подталкивает к одному способу. Это снижает свободу, но любой разработчик, открывший чужой Angular-проект, видит знакомую структуру. В больших командах это экономит больше времени, чем стоит потерянная гибкость.
| Задача | В Angular из коробки | В библиотеке-подходе |
|---|---|---|
| Роутинг | @angular/router, официальный | Сторонний пакет на выбор |
| HTTP-запросы | HttpClient, httpResource | fetch или сторонний клиент |
| Формы | Reactive, Template, Signal Forms | Сторонняя библиотека форм |
| Сборка и CLI | Angular CLI на esbuild/Vite | Настраивается вручную |
В чём ключевое отличие Angular как фреймворка от UI-библиотеки вроде React?
Два разворота: TypeScript и сигналы
У Angular в истории два крупных разворота. Первый - 2016 год: AngularJS на JavaScript выбрасывают и пишут Angular 2 на TypeScript с архитектурой компонентов. Совместимости нет, сообщество злится, но именно это даёт строгую типизацию и масштабируемость. Второй разворот происходит в 2023-2025 годах: фреймворк уходит от Zone.js и dirty checking к сигналам и zoneless change detection.
| Год | Событие | Почему важно |
|---|---|---|
| 2010 | AngularJS открыт Google | Двусторонняя привязка и dirty checking входят в моду |
| 2016 | Angular 2 на TypeScript | Несовместимое переписывание, компоненты и строгие типы |
| 2023 | Сигналы (developer preview, v16) | Точная реактивность вместо проверки всего дерева |
| 2025 | Angular 21, zoneless по умолчанию | Zone.js больше не нужен, обнаружение изменений точечное |
| 2026 | Angular 22 (июнь 2026) | OnPush по умолчанию, Vitest как основной тест-раннер |
Раньше Angular полагался на Zone.js: библиотека перехватывала любое асинхронное событие (клик, таймер, ответ сервера) и после него перепроверяла всё дерево компонентов на изменения. Это работало, но было затратно. Сигнал - это значение, которое знает, кто его читает, и при изменении уведомляет только тех, кто реально от него зависит. Обновляется лишь нужная часть экрана.
Сигнал читается как функция: count() возвращает текущее значение. computed создаёт производное значение, которое пересчитывается само, когда меняется любой сигнал внутри него. Шаблон, читающий count(), обновится только при изменении именно count, а не от каждого клика в приложении.
Чем сигналы отличаются от старого подхода с Zone.js при обнаружении изменений?
Где Angular выигрывает в реальном проде
Angular расцветает там, где приложение большое, живёт годами и над ним работают десятки людей. Единый стиль, строгая типизация и batteries included снижают цену онбординга: новый разработчик видит привычную структуру и официальный способ решать типовые задачи. Поэтому Angular любят банки, авиалинии, телеком и внутренние панели Google. Один CLI генерирует компоненты, сервисы и тесты, один роутер, одна система форм - меньше споров о выборе библиотек.
| Где Angular силён | Почему |
|---|---|
| Enterprise-панели и дашборды | Сложные формы, таблицы, роли. Всё это есть в коробке |
| Большие команды | Единый стиль и структура снижают цену онбординга и ревью |
| Долгоживущие продукты | Дважды в год релизы, ясный путь миграций, LTS |
| Строго регулируемые домены | Предсказуемость и типизация важнее, чем минимальный бандл |
Где Angular не лучший выбор: для статического лендинга или маленького блога полный фреймворк избыточен - хватит обычного HTML или генератора. Если критичен минимальный размер JS, более лёгкие решения дадут меньший бандл. Порог входа у Angular выше, чем у мелкой библиотеки, и для прототипа на выходные это перебор.
Важно, что разворот на сигналы и zoneless снял главную историческую претензию к Angular - тяжёлый рантайм и затратное обнаружение изменений. В 2026 году фреймворк остаётся opinionated и полным, но стал заметно легче и быстрее, сохранив свою сильную сторону - предсказуемую структуру для крупных приложений.
Команда выбирает технологию для нового банковского портала: сотни экранов, сложные формы, команда из 25 человек, поддержка пять лет. Что разумнее всего?
Связь с другими темами
Этот урок про мотивацию и философию. Дальше курс раскрывает фреймворк по слоям:
- Angular CLI и структура проекта — Ставим инструментарий, разбираем ng new, esbuild и раскладку файлов. Без этого код не запустить
- Компоненты — Базовый строительный блок Angular. Первый практический шаг после понимания идеи
- Сигнальные input и output — Реактивная модель Angular 2026 на сигналах - прямое продолжение разговора о zoneless-архитектуре
Итог
- AngularJS создан Хевери и Эйбронсом, открыт Google в 2010 году на идее двусторонней привязки и dirty checking
- Angular 2 (2016) - несовместимое переписывание на TypeScript и компонентах, давшее opinionated full framework вместо библиотеки
- К ноябрю 2025 вышел Angular 21: сигналы по умолчанию, zoneless change detection как стандарт, Vitest вместо Karma, standalone-компоненты по умолчанию
- Angular приходит batteries included: роутер, формы, HTTP-клиент, CLI и тестирование в одном официальном пакете
- Angular выигрывает в крупных enterprise-приложениях и больших командах, но для маленького лендинга часто избыточен
Связанные уроки
- ng-02-setup-cli — Поняв зачем Angular, ставим CLI и разбираем структуру проекта, чтобы перейти к коду
- ng-03-components — Компонент - базовая единица Angular. Следующий шаг после понимания философии фреймворка
- ng-06-inputs-outputs — Сигналы - сердце Angular 2026. Сигнальные input/output продолжают идею реактивности из этого урока