1. Знакомство с Angular
В мире фронтенда есть не только React и Next.js — существует ещё один крупный и очень мощный фреймворк: Angular. Сегодня мы разберём, что это за зверь, чем он отличается от React, зачем его придумали и почему его так любят в крупных компаниях.
Angular — это современный фронтенд-фреймворк от Google для создания сложных, масштабируемых и производительных веб-приложений. Его основная задача — дать разработчику полный набор инструментов для построения всего приложения «под ключ»: от компонентов и роутинга до HTTP-запросов, форм, валидации, тестирования и даже архитектуры.
Ключевая особенность: Angular — это не просто библиотека для UI, а целая платформа. Если React — это как швейцарский нож (маленький, но можно добавить что угодно), то Angular — это целый ящик с инструментами, где уже есть всё, что нужно.
Изначально React был набором JS-библиотек, а Angular — универсальным фреймворком с TypeScript, сборкой, SSR и другими плюшками. Это давало ему настолько много бонусов в production, что React захотел себе такие же. Так и появился Next. Теперь и у React есть свой фреймворк. А начиналось все так...
Философия Angular
Angular — это не просто набор инструментов для UI. Это целая экосистема:
- Компоненты — основа приложения, всё строится из них.
- Модули — помогают структурировать код, делить приложение на логические части.
- Сервисы — для бизнес-логики, работы с данными, взаимодействия между компонентами.
- DI (Dependency Injection) — встроенная система внедрения зависимостей (помогает писать тестируемый и переиспользуемый код).
- Роутинг — маршрутизация «из коробки».
- Формы — мощная система для работы с формами и валидацией.
- HTTP-клиент — для общения с сервером.
- Тестирование — встроенные инструменты для unit- и e2e-тестов.
- CLI (Command Line Interface) — генерация кода, запуск сборки, тестов и т.д.
- RxJS — реактивное программирование для работы с потоками данных.
Зачем это все?
Angular создавался для больших команд и крупных проектов. Его цель — дать разработчикам единые подходы, строгую архитектуру и минимизировать «велосипеды». В результате, если вы начинаете новый проект на Angular — у вас уже есть:
- Чёткая структура папок и файлов.
- Стандартизированные подходы к организации кода.
- Встроенные best practices.
2. Ключевые особенности Angular
TypeScript
Angular написан на TypeScript. Это строго типизированный надсет над JavaScript, который помогает ловить ошибки ещё до запуска приложения. В Angular без TypeScript — никуда! В React сейчас тоже все используют TypeScript, но Angular-то перешел на него официально еще в 2016 году.
Компонентная архитектура
Всё приложение строится из компонентов. Каждый компонент — это отдельный кусок UI со своим шаблоном, стилями и логикой. Компоненты можно вкладывать друг в друга, переиспользовать и строить сложные интерфейсы.
Декларативные шаблоны
Вместо ручного создания DOM (как в чистом JS) или JSX (как в React), Angular использует HTML-шаблоны с директивами и привязками данных:
<button (click)="onClick()">{{ label }}</button>
- {{ label }} — интерполяция данных.
- (click)="onClick()" — обработчик событий.
Директивы
Директивы — это специальные конструкции для управления DOM (например, *ngIf, *ngFor). Они позволяют показывать/скрывать элементы, повторять их и многое другое.
Внедрение зависимостей (Dependency Injection)
Angular изначально строился с поддержкой DI. Это значит, что сервисы и другие зависимости можно легко «подкладывать» в компоненты, что упрощает тестирование и повторное использование кода.
RxJS и реактивность
Работа с асинхронными данными и событиями строится вокруг Observable (наблюдаемых) из библиотеки RxJS. Это мощный инструмент для работы с потоками данных, трансформациями, фильтрацией и т.д.
CLI (Angular CLI)
Официальный инструмент командной строки для генерации компонентов, сервисов, запуска сборки, тестов, линтинга и даже обновления проекта.
ng new my-app
ng generate component user-list
ng serve
Если бы у React был такой CLI, то он бы, наверное, назывался "react-create-react-create-app"! 😂
3. Как выглядит «Hello, Angular»?
Давайте посмотрим, как выглядит самый простой компонент в Angular.
app.component.ts:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<h1>Привет, Angular!</h1>`,
styles: [`h1 { color: #1976d2; }`]
})
export class AppComponent {}
Пояснение:
- @Component — декоратор, который описывает компонент.
- selector — имя кастомного тега, который можно использовать в HTML.
- template — шаблон компонента.
- styles — стили компонента.
index.html:
<body>
<app-root></app-root>
</body>
Angular сам найдёт <app-root> и «вставит» туда ваш компонент.
4. Отличие Angular от React: в чём разница?
Подход к архитектуре
- Angular — это фреймворк. Он диктует, как строить приложение, какую структуру использовать, какие инструменты применять.
- React — это библиотеки для построения UI. Всё остальное (роутинг, управление состоянием, HTTP, формы) добавляется отдельно, на выбор разработчика.
Аналогия: Angular — это как купить квартиру с ремонтом и мебелью; React — это купить голые стены и самому решать, какую плитку класть и где будет кухня.
Язык и синтаксис
- Angular использует TypeScript, шаблоны на HTML, директивы (*ngIf, *ngFor), декораторы (@Component).
- React использует JavaScript (TypeScript опционально), JSX (HTML в JS), хуки (useState, useEffect).
Пример: кнопка с обработчиком
Angular:
<button (click)="onClick()">{{ label }}</button>
label = 'Нажми меня';
onClick() { alert('Привет!'); }
React:
function MyButton() {
const [label, setLabel] = useState('Нажми меня');
return <button onClick={() => alert('Привет!')}>{label}</button>;
}
Управление состоянием
- Angular предлагает сервисы и RxJS для управления состоянием, внедрение зависимостей для глобальных сервисов.
- React использует хуки (useState, useReducer, контекст), сторонние библиотеки — Redux, MobX и т.д.
Роутинг и формы
- Angular: всё есть из коробки — мощный роутер, формы (template-driven и reactive), валидация, HTTP-клиент.
- React: роутинг (react-router), формы (formik, react-hook-form), HTTP (axios, fetch) — сторонние решения.
Внедрение зависимостей
- Angular: DI — часть ядра, сервисы легко подключаются во все компоненты.
- React: DI нет, используют контекст (Context API) или сторонние библиотеки.
Тестирование
- Angular: встроенная поддержка unit-тестов (Jasmine/Karma), e2e (Protractor/Cypress).
- React: тестирование — сторонние библиотеки (Jest, Testing Library).
Размер и сложность
- Angular: больше размер бандла, выше порог входа, но строгая структура и мощные возможности.
- React: меньше размер, проще начать, больше свободы (и больше шансов «написать велосипед»).
5. Полезные нюансы
Когда выбирать Angular, а когда React?
Angular идеален, если:
- Вы работаете в большой команде и нужен единый стиль кода.
- Требуется строгая архитектура и масштабируемость.
- Проект — корпоративный, с долгим сроком жизни и сложной бизнес-логикой.
- Важна поддержка Google и долгосрочная стабильность.
React хорош, если:
- Проект небольшой или средний, важна скорость старта.
- Вы хотите больше гибкости и свободы в выборе библиотек.
- В команде уже есть опыт React.
- Нужно быстро прототипировать или часто менять архитектуру.
Angular в современном фронтенде: стоит ли учить?
Angular — один из трёх «столпов» современного фронтенда (наряду с React/Next и Vue/Nuxt). Его используют в крупных компаниях: Google, Microsoft, Deutsche Bank, Autodesk, Samsung и др. В корпоративном секторе Angular часто выбирают за предсказуемость и стандарты.
- Порог входа выше, чем у React, но зато вы сразу учитесь писать «по-взрослому».
- Angular отлично подходит для долгоживущих и сложных проектов, где важна поддерживаемость и масштабируемость.
- На рынке труда Angular-разработчики востребованы, особенно в крупных компаниях.
Как будет выглядеть ваше учебное приложение на Angular
В ходе следующих лекций мы шаг за шагом создадим простое, но наглядное Angular-приложение: список задач (todo-лист) с возможностью добавлять, удалять, фильтровать задачи и работать с формами. Мы познакомимся с CLI, компонентами, сервисами, роутингом, формами и даже сделаем простое взаимодействие с сервером.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ