Перейти к содержимому

О курсе Angular

🅰️ Angular: Полный курс от основ до мастерства

Заголовок раздела «🅰️ Angular: Полный курс от основ до мастерства»

Добро пожаловать в курс по Angular — одному из самых мощных и зрелых фреймворков для создания веб-приложений! 🎉

Если ты хочешь научиться строить серьёзные, масштабируемые приложения с чётко структурированным кодом — ты пришёл по адресу. Angular — это не просто библиотека, это целая экосистема, и мы разберём её от фундамента до самых продвинутых концепций.


2010 год — Google выпускает AngularJS (версия 1.x). Это революция! Впервые разработчики получают двустороннюю привязку данных (ng-model) прямо в HTML. Фреймворк буквально взрывает веб-разработку.

2010 → AngularJS 1.0 появился (Misko Hevery, Google)
2012 → AngularJS 1.2 — стабильность и популярность
2014 → Анонс полного переписывания (Angular 2)
2016 → Angular 2 выходит — всё по-новому!
2017 → Angular 4 (версию 3 пропустили 😄)
2018 → Angular 6 — Angular Elements, Ivy начало
2020 → Angular 9 — Ivy по умолчанию
2021 → Angular 12 — deprecate IE11
2022 → Angular 14 — Standalone Components!
2023 → Angular 16 — Signals (экспериментально)
2024 → Angular 17 — новый синтаксис @if/@for, Signals стабильны
2025 → Angular 18+ — продолжение эволюции

Большой переход с AngularJS на Angular 2 в 2016 году был болезненным — это было полное переписывание с нуля. AngularJS использовал JavaScript, Angular 2+ — TypeScript. Архитектура, шаблоны, всё — заново. Но результат того стоил! 💪

Важно: AngularJS (версия 1) и Angular (версия 2+) — это разные фреймворки. В этом курсе мы изучаем Angular 2+, который сегодня просто называют Angular.


Это один из ключевых вопросов, который нужно понять перед началом работы.

React — это библиотека (library):

  • Даёт тебе инструменты для построения UI
  • Ты сам выбираешь: роутер, стейт-менеджмент, HTTP, форматирование
  • Свобода выбора = больше решений на твоей совести
  • Экосистема: React Router, Redux/Zustand, Axios, React Query…

Angular — это фреймворк (framework):

  • Даёт тебе всё из коробки: роутер, HTTP, формы, анимации, i18n
  • Один путь решения задачи (opinionated)
  • Меньше выборов = меньше споров в команде
  • Встроенная архитектура с модулями, сервисами, DI

Аналогия 🏠: React — это набор строительных материалов (кирпичи, цемент, доски). Angular — это готовый проект дома с инструкцией. С материалами можно построить что угодно, с проектом — быстрее и предсказуемее.


КритерийAngularReactVue
ТипФреймворкБиблиотекаПрогрессивный фреймворк
ЯзыкTypeScriptJS/TSJS/TS
Размер~65 KB (gzip)~42 KB~33 KB
Кривая обученияКрутая 📈СредняяПологая
СоздательGoogleMeta (Facebook)Evan You
Первый выпуск201620132014
АрхитектураЖёсткая (MVC/MVVM)ГибкаяГибкая
State ManagementNgRx/SignalsRedux/Zustand/JotaiPinia/Vuex
РоутерВстроен ✅React Router (отдельно)Vue Router (отдельно)
HTTPHttpClient ✅Fetch/Axios (отдельно)Fetch/Axios (отдельно)
ФормыВстроены ✅React Hook Form (отдельно)VeeValidate (отдельно)
DI (Dependency Injection)Встроен ✅Нет (вручную)Нет
TestingJasmine/Jest ✅Jest/RTLVitest
ПрименениеEnterprise, большие командыВсё, от SPA до мобилокСредние проекты, простота
КомпанииGoogle, Microsoft, ForbesFacebook, Airbnb, UberAlibaba, Nintendo, GitLab

В этом курсе 65 уроков, сгруппированных по темам:

  1. Что такое Angular — архитектура, философия, экосистема
  2. Установка и Angular CLI — настройка окружения, ng команды
  3. Первое приложение — анатомия Angular app, компоненты
  4. Компоненты — создание, lifecycle, взаимодействие
  5. Шаблоны и привязка данных — интерполяция, property binding
  1. Property и Event Binding[prop], (event)
  2. Two-Way Binding[(ngModel)]
  3. Встроенные директивы*ngIf, *ngFor, *ngSwitch
  4. Пользовательские директивы — создаём свои
  5. Pipesdate, currency, async
  6. Пользовательские Pipes — свои трансформации
  1. Сервисы — бизнес-логика, singleton pattern
  2. Dependency Injection — провайдеры, иерархия
  3. HttpClient — HTTP запросы, перехватчики
  1. RxJS в Angular — Observable, Subject, операторы
  2. Маршрутизация: основы — RouterModule, <router-outlet>
  3. Маршрутизация: продвинутая — параметры, дочерние маршруты
  4. Route Guards — защита маршрутов
  5. Route Resolvers — предзагрузка данных
  6. Lazy Loading — ленивая загрузка модулей
  1. Template-driven Forms[(ngModel)], валидация
  2. Reactive FormsFormBuilder, FormGroup
  3. Валидация форм — встроенные и кастомные
  4. Пользовательские валидаторыValidator интерфейс
  1. @Input и @Output — передача данных между компонентами
  2. ViewChild и ContentChild — доступ к DOM и компонентам
  3. Content Projection<ng-content>
  4. Lifecycle HooksngOnInit, ngOnDestroy, все хуки
  5. Change Detection — стратегии, оптимизация
  6. Angular Modules — NgModule, организация кода
  7. Standalone Components — современный Angular без NgModule
  1. Signals (Angular 17+) — реактивность нового поколения
  2. Signals: Продвинутый уровень — computed, effect
  3. Injection TokensInjectionToken, useValue, useFactory
  4. HTTP Interceptors — перехват запросов
  5. Обработка ошибок — глобальный ErrorHandler
  6. Angular Animations@angular/animations
  7. Angular Material — UI компоненты
  8. CDK (Component Dev Kit) — overlay, drag&drop, a11y
  1. NgRx: Введение — Flux паттерн, Redux в Angular
  2. NgRx: Store и Reducers — state, actions, reducers
  3. NgRx: Effects — side effects
  4. NgRx: Selectors — эффективное получение данных
  5. NgRx: Entity — работа с коллекциями
  6. NgRx: Component Store — локальный стейт
  7. NGXS — альтернатива NgRx
  1. Тестирование: Jasmine/Karma — unit тесты
  2. Тестирование: Jest — современный подход
  3. E2E тесты: Cypress/Playwright — интеграционное тестирование
  1. SSR и Angular Universal — серверный рендеринг
  2. PWA с Angular — Progressive Web Apps
  3. Интернационализация (i18n) — мультиязычность
  4. Оптимизация производительности — OnPush, trackBy, виртуализация
  5. Web Workers — вынос вычислений в фон
  6. Динамические компонентыViewContainerRef
  7. Пользовательские Form ControlsControlValueAccessor
  8. Angular Elements — превращаем компоненты в Web Components
  9. Конфигурация окружений — environment файлы
  10. Оптимизация сборки — budget, tree-shaking
  11. Monorepo с Nx — workspace управление
  12. Микрофронтенды — Module Federation
  13. GraphQL с Angular — Apollo Client
  14. WebSockets — real-time приложения
  15. Паттерн Facade — архитектурный паттерн
  16. Лучшие практики — что делать и не делать в Angular

Перед началом курса убедись, что у тебя есть базовые знания:

// Типы и интерфейсы
interface User {
id: number;
name: string;
email?: string; // необязательное поле
}
// Дженерики
function getFirst<T>(arr: T[]): T {
return arr[0];
}
// Декораторы (важно для Angular!)
function Log(target: any, key: string, descriptor: PropertyDescriptor) {
console.log(`Метод ${key} вызван`);
return descriptor;
}
<!-- Базовый HTML -->
<div class="container">
<h1>Заголовок</h1>
<p>Параграф с <span style="color: red">цветом</span></p>
</div>
/* Flexbox и Grid */
.container {
display: flex;
justify-content: center;
align-items: center;
gap: 16px;
}
// Async/Await
async function fetchUser(id) {
const response = await fetch(`/api/users/${id}`);
return response.json();
}
// Деструктуризация и spread
const { name, ...rest } = user;
const newArray = [...arr1, ...arr2];
// Модули ES6
import { something } from './module';
export const value = 42;

  1. Читай последовательно — каждый урок строится на предыдущем
  2. Запускай код — не просто читай, а пробуй в интерактивных примерах
  3. Делай домашние задания — в конце каждого раздела есть задачи
  4. Строй свой проект — применяй знания на реальном приложении
  5. Задавай вопросы — нет глупых вопросов, есть невыясненные!

🛠️ Инструменты, которые нам понадобятся

Заголовок раздела «🛠️ Инструменты, которые нам понадобятся»
ИнструментВерсияЗачем
Node.js18+Среда выполнения JS
npm9+Менеджер пакетов
Angular CLI17+Создание и управление проектами
VS CodeпоследняяРедактор кода
Angular Language ServiceплагинIntelliSense для Angular
Chrome DevToolsвстроенОтладка

Angular — это серьёзный инструмент для серьёзных задач. После прохождения этого курса ты сможешь:

  • ✅ Строить корпоративные SPA с нуля
  • ✅ Грамотно организовывать код в больших командах
  • ✅ Использовать современные паттерны (Signals, Standalone)
  • ✅ Работать с NgRx и сложным управлением состоянием
  • ✅ Оптимизировать производительность приложений
  • ✅ Писать тесты (unit, integration, e2e)
  • ✅ Деплоить приложения с SSR

Переходи к первому уроку и начнём! 🅰️💪


Посмотрим, где Angular используется сегодня — и поймём почему крупные компании выбирают именно его.

Сам Google использует Angular для многих своих продуктов:

  • Google Cloud Console — управление облачной инфраструктурой
  • Google Analytics — панель аналитики
  • Google Ads — рекламный кабинет
  • Firebase Console — панель управления базами данных

Логично: Google создал Angular, Google использует Angular. Фреймворк “ест свою собственную еду” (dogfooding).

  • Azure Portal — управление облачными ресурсами Azure (частично Angular)
  • Office 365 — веб-версии офисных приложений
Forbes → корпоративные внутренние системы
Deutsche Bank → финансовые платформы
Samsung → внутренние enterprise решения
Upwork → платформа для фрилансеров

Многие разработчики начинают с вопроса: “А зачем учить Angular, если есть React?” Давай ответим честно.

Размер бандла (начальная загрузка):

Angular (производственная сборка):
main.js: ~65 KB gzip
полифилы: ~8 KB gzip
Итого: ~73 KB
React (без библиотек маршрутизации и стейта):
react + react-dom: ~42 KB gzip
React (с полным стеком — Router + Redux + Axios):
~100-130 KB gzip

Парадокс: “лёгкий” React с полным стеком может быть тяжелее Angular!

Скорость разработки:

Маленький проект (1-2 разработчика, 3 месяца):
React ██████████ 10 (быстрее, меньше boilerplate)
Angular ███████ 7
Средний проект (5 разработчиков, 1 год):
React ████████ 8 (нужно выбрать стек, настроить)
Angular █████████ 9
Большой проект (20+ разработчиков, 3+ года):
React ██████ 6 (разные команды пишут по-разному)
Angular ██████████ 10 (единый стиль, всё по правилам)

TypeScript интеграция:

// React — TypeScript опционален
// Можно писать .js и .jsx файлы
// Типы можно не использовать
// Angular — TypeScript обязателен
// Весь фреймворк написан на TypeScript
// Декораторы требуют TypeScript
// strict: true в tsconfig рекомендуется

📊 Angular: исторические версии и что добавлялось

Заголовок раздела «📊 Angular: исторические версии и что добавлялось»
ВерсияГодГлавное нововведение
AngularJS 1.02010Two-way binding, ng-model, MVC
Angular 22016Полное переписывание, TypeScript, компоненты
Angular 42017Улучшенный router, HttpClient
Angular 62018Angular Elements, CDK
Angular 82019Ivy preview, differential loading
Angular 92020Ivy по умолчанию, меньший бандл
Angular 122021Удаление View Engine, Webpack 5
Angular 142022Standalone Components!
Angular 152022Standalone API стабилен
Angular 162023Signals (dev preview), esbuild
Angular 172023Новый синтаксис @if/@for, Signals stable
Angular 182024Zoneless (экспериментально)

Важный факт о версионировании: Angular пропустил версию 3! Это было сделано намеренно, чтобы синхронизировать версии пакетов @angular/router (который уже был на версии 3) с остальными пакетами Angular.


Angular — это центр, вокруг которого выстраивается экосистема:

┌─────────────────┐
│ Angular App │
└────────┬────────┘
┌───────────────────┼───────────────────┐
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Стейт │ │ UI │ │ Утилиты│
│ │ │ │ │ │
│ NgRx │ │ Angular │ │ RxJS │
│ NGXS │ │ Material│ │ Lodash │
│ Akita │ │ PrimeNG │ │ date-fns│
│ Signals │ │ Tailwind│ │ Zod │
└─────────┘ └─────────┘ └─────────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Тесты │ │ Сборка │ │ Бэкенд │
│ │ │ │ │ │
│ Jasmine │ │ esbuild │ │ NestJS │
│ Jest │ │ Webpack │ │ Express │
│ Cypress │ │ Vite │ │ GraphQL │
│ Testing │ │ Nx │ │ gRPC │
│ Library │ │ │ │ │
└─────────┘ └─────────┘ └─────────┘

Интересный факт: NestJS (Node.js фреймворк для бэкенда) был вдохновлён Angular и использует похожую архитектуру с декораторами, модулями и DI. Команда, знающая Angular, легко освоит NestJS!


Миф 1: “Angular слишком сложный”

Реальность: Angular сложнее в начале, но проще при масштабировании. Как TypeScript vs JavaScript.

Миф 2: “Angular умирает, все переходят на React”

Реальность: Angular занимает стабильные 20-25% рынка фреймворков. Google активно развивает его (6 major версий за 3 года).

Миф 3: “Angular медленный”

Реальность: Angular с OnPush стратегией и Signals сопоставим по производительности с React. Разница в реальных приложениях незначительна.

Миф 4: “NgModule — это кошмар”

Реальность: В Angular 17+ NgModule опциональны. Standalone компоненты убирают большую часть boilerplate.

Миф 5: “Angular только для enterprise”

Реальность: Angular отлично подходит для проектов любого размера, просто для маленьких проектов может быть избыточен.


Текущее состояние Angular:

Активность разработки:
Релизы: каждые 6 месяцев (major)
Патчи: каждые 2-4 недели
Contributors: 400+ активных
GitHub stars: 90,000+
Использование:
npm downloads: 3+ миллиона в неделю
Компании: Google, Microsoft, Deutsche Bank...
Разработчики: ~1.5 миллиона активных пользователей
Новые фичи 2024-2025:
✅ Signals — новая реактивность без Zone.js
✅ @if / @for / @switch — новый шаблонный синтаксис
✅ Deferred loading (@defer) — отложенная загрузка компонентов
✅ SSR улучшения — встроенный SSR в Angular CLI
🔬 Zoneless — экспериментально (без Zone.js вообще!)

Angular активно развивается и учится у своих конкурентов. Signals — прямой ответ на React Hooks. @if/@for — упрощение синтаксиса в ответ на критику *ngIf/*ngFor.


По данным различных опросов и платформ (2024):

Junior Angular Developer:
Россия: 80,000 - 120,000 ₽/мес
Украина: $1,200 - $2,000/мес
США: $70,000 - $90,000/год
Middle Angular Developer:
Россия: 150,000 - 250,000 ₽/мес
Удалённо (EU/US): $3,000 - $6,000/мес
США: $100,000 - $130,000/год
Senior Angular Developer:
Удалённо (EU/US): $6,000 - $10,000/мес
США: $140,000 - $180,000/год

Angular разработчики ценятся в enterprise сегменте — банки, страховые компании, государственные структуры. Там часто платят больше, чем React-стартапы.


Для изучения Angular, помимо этого курса:

Официальные ресурсы:

  • 📖 angular.dev — официальная документация (Angular 17+)
  • 🎓 angular.io/tutorial — официальный туториал Tour of Heroes
  • 🐦 @angular — официальный Twitter

YouTube каналы:

  • Decoded Frontend — продвинутые темы
  • Angular University — полные курсы
  • Fireship — быстрые обзоры

Конференции:

  • ng-conf (США)
  • AngularConnect (Европа)
  • ng-de (Германия)