Angular предоставляет структуру проекта, оптимизированную для
создания масштабируемых веб-приложений. Важным аспектом является то, что
Angular использует модульный подход, который позволяет легко управлять
зависимостями и организовывать код. При создании нового проекта Angular
с помощью командного инструмента Angular CLI (например, команды
ng new), проект генерирует определенную структуру каталогов
и файлов. Эта структура служит основой для организации всего
приложения.
После создания проекта структура будет выглядеть примерно следующим образом:
my-angular-app/
├── e2e/
├── node_modules/
├── src/
│ ├── app/
│ ├── assets/
│ ├── environments/
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── styles.css
│ └── tsconfig.app.json
├── angular.json
├── package.json
└── tsconfig.json
Директория src/ является основным местом для работы над проектом. Внутри этой папки находятся несколько ключевых компонентов:
environment.ts для локальной разработки и
environment.prod.ts для продакшн-версии.AppModule).Angular — это модульный фреймворк. Каждый Angular-приложение должно
иметь хотя бы один модуль — корневой модуль. По умолчанию это
AppModule, который находится в файле
app.module.ts внутри директории app/.
Модуль определяет:
В app.module.ts модули и компоненты обычно импортируются и декларируются. Модуль также определяет, какие части приложения доступны для использования в других частях проекта.
Каждое Angular-приложение состоит из множества компонентов. Каждый
компонент описан в файле с расширением .ts и представляет
собой класс с декоратором @Component. Структура компонента
включает:
Компоненты, как правило, разделяются по функциональности или разделам приложения, что помогает организовать код и повысить его читаемость.
Сервисы предназначены для хранения логики, которая не относится напрямую к представлению данных (например, работа с API, обработка данных, управление состоянием). Сервисы обычно инжектируются в компоненты или другие сервисы через механизм зависимостей Angular (Dependency Injection).
Сервисы обычно определяются с использованием декоратора
@Injectable и предоставляются через providers
в соответствующем модуле или компоненте.
ngIf управляет
видимостью элемента, а директива ngFor используется для
повторяющегося отображения элементов.DatePipe используется для форматирования дат, а пайп
CurrencyPipe — для отображения валютных значений.Для работы с навигацией в Angular используется модуль RouterModule, который позволяет определить маршруты для разных компонентов. Роутинг в Angular предоставляет возможность динамически загружать компоненты на основе URL.
Конфигурация маршрутов указывается в файле
app-routing.module.ts, где определяются маршруты и
компоненты, которые нужно отобразить для каждого пути. Angular также
поддерживает ленивую загрузку модулей, что позволяет загружать
компоненты только по мере необходимости, улучшая производительность
приложения.
Angular поддерживает различные виды тестирования:
Для юнит-тестирования Angular использует фреймворк Jasmine, а для работы с компонентами в тестах используется TestBed.
Структура Angular-проекта предоставляет четкие рекомендации по организации исходного кода и ресурсных файлов, что значительно упрощает разработку и масштабирование приложений. Использование модульности, компонентов, сервисов и роутинга позволяет гибко и эффективно строить сложные веб-приложения, поддерживая их читаемость и тестируемость.