JavaRush /Курсы /Модуль 4: Node.js, Next.js и Angular /Что такое Angular: философия, отличие от React

Что такое Angular: философия, отличие от React

Модуль 4: Node.js, Next.js и Angular
13 уровень , 0 лекция
Открыта

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, компонентами, сервисами, роутингом, формами и даже сделаем простое взаимодействие с сервером.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ