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, httpResourcefetch или сторонний клиент
ФормыReactive, Template, Signal FormsСторонняя библиотека форм
Сборка и CLIAngular CLI на esbuild/ViteНастраивается вручную

В чём ключевое отличие Angular как фреймворка от UI-библиотеки вроде React?

Два разворота: TypeScript и сигналы

У Angular в истории два крупных разворота. Первый - 2016 год: AngularJS на JavaScript выбрасывают и пишут Angular 2 на TypeScript с архитектурой компонентов. Совместимости нет, сообщество злится, но именно это даёт строгую типизацию и масштабируемость. Второй разворот происходит в 2023-2025 годах: фреймворк уходит от Zone.js и dirty checking к сигналам и zoneless change detection.

ГодСобытиеПочему важно
2010AngularJS открыт GoogleДвусторонняя привязка и dirty checking входят в моду
2016Angular 2 на TypeScriptНесовместимое переписывание, компоненты и строгие типы
2023Сигналы (developer preview, v16)Точная реактивность вместо проверки всего дерева
2025Angular 21, zoneless по умолчаниюZone.js больше не нужен, обнаружение изменений точечное
2026Angular 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 продолжают идею реактивности из этого урока
Angular: зачем фуллстек-фреймворк и где он в 2026

0

1

Войти