Загрузка...

Справочник CLI

Справочник CLI в Angular представляет собой ключевой инструмент для эффективного управления проектами и компонентами в экосистеме Angular. CLI (Command Line Interface) позволяет автоматизировать создание компонентов, сервисов, модулей, пайпов и других элементов приложения, обеспечивая стандартизацию структуры проекта и ускоряя процесс разработки.
Использование CLI актуально на всех этапах разработки: от создания нового проекта (ng new) и генерации компонентов (ng generate component) до сборки и публикации приложения (ng build, ng deploy). CLI также упрощает управление состоянием приложения через сервисы и обеспечивает правильный поток данных между компонентами, интегрируя концепции жизненного цикла Angular.
Читатель узнает, как CLI помогает строить масштабируемую архитектуру, оптимизировать производительность и управлять данными в компонентах и сервисах. Справочник CLI особенно полезен для разработки современных SPA (Single Page Applications), позволяя создавать чистые, переиспользуемые и легко поддерживаемые компоненты. В практическом применении знание CLI сокращает количество ошибок, связанных с проп-дриллингом, лишними перерендериваниями и неправильной мутацией состояния.

Базовый Пример

typescript
TYPESCRIPT Code
// Простой пример использования Angular CLI для создания функционального компонента
// Создайте проект: ng new example-cli
// Сгенерируйте компонент: ng generate component counter

import { Component } from '@angular/core';

@Component({
selector: 'app-counter',
template: `     <h2>Счётчик CLI Angular</h2>     <p>Текущее значение: {{ counter }}</p>     <button (click)="increment()">Увеличить</button>     <button (click)="decrement()">Уменьшить</button>
`,
styles: [`h2 { color: #1976d2; } button { margin: 5px; }`]
})
export class CounterComponent {
counter: number = 0;

increment() {
this.counter++;
}

decrement() {
this.counter--;
}
}

// Добавьте <app-counter></app-counter> в app.component.html
// Запуск сервера: ng serve

В приведённом примере CLI создаёт весь каркас компонента: файлы .ts, .<a href="/ru/html/" class="smart-link">html</a>, .<a href="/ru/css/" class="smart-link">css</a> и .spec.ts. Компонент CounterComponent демонстрирует управление состоянием через свойство counter и методы increment и decrement.
Привязка событий (click) показывает, как Angular реализует однонаправленный поток данных. CLI автоматически регистрирует компонент в модуле приложения (app.module.ts), что предотвращает ошибки ручной конфигурации.
Такой подход устраняет необходимость проп-дриллинга и лишних перерендериваний, благодаря эффективной детекции изменений Angular. В реальном проекте состояние можно хранить в сервисе с использованием RxJS (BehaviorSubject), позволяя нескольким компонентам реагировать на изменения данных. CLI облегчает интеграцию этих сервисов, концентрируя внимание на логике приложения, а не на конфигурации.

Практический Пример

typescript
TYPESCRIPT Code
// Продвинутый пример с управлением состоянием и жизненным циклом
// Сгенерируйте сервис: ng generate service counter

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

@Injectable({ providedIn: 'root' })
export class CounterService {
private value = new BehaviorSubject<number>(0);
counter$ = this.value.asObservable();

increment() {
this.value.next(this.value.value + 1);
}

decrement() {
this.value.next(this.value.value - 1);
}
}

// Компонент, использующий сервис:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { CounterService } from './counter.service';

@Component({
selector: 'app-advanced-counter',
template: `     <h2>Продвинутый счётчик CLI</h2>     <p>Текущее значение: {{ value }}</p>     <button (click)="add()">+</button>     <button (click)="remove()">-</button>
`
})
export class AdvancedCounterComponent implements OnInit, OnDestroy {
value = 0;
sub!: Subscription;

constructor(private counterService: CounterService) {}

ngOnInit() {
this.sub = this.counterService.counter$.subscribe(v => this.value = v);
}

add() {
this.counterService.increment();
}

remove() {
this.counterService.decrement();
}

ngOnDestroy() {
this.sub.unsubscribe();
}
}

Advanced Angular Implementation

typescript
TYPESCRIPT Code
// Пример для корпоративного проекта: модуль Shared + оптимизация
// Создаём общий модуль: ng generate module shared

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AdvancedCounterComponent } from '../advanced-counter/advanced-counter.component';

@NgModule({
declarations: [AdvancedCounterComponent],
imports: [CommonModule],
exports: [AdvancedCounterComponent]
})
export class SharedModule {}

// Регистрация в AppModule:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';

@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, SharedModule],
bootstrap: [AppComponent]
})
export class AppModule {}

Рекомендуемые практики CLI включают создание общих модулей (SharedModule) для переиспользования компонентов, что повышает модульность и уменьшает дублирование кода. CLI обеспечивает корректную регистрацию и импорт, что минимизирует ошибки.
Распространённые ошибки: прямое изменение состояния (нарушает реактивный паттерн), лишние перерендеривания компонентов, циклические зависимости. CLI предоставляет команды для линтинга и тестирования (ng lint, ng test), помогающие выявлять проблемы на раннем этапе.
Для оптимизации производительности используйте ng build --prod для минимизации и tree-shaking. CLI также позволяет проводить аудит безопасности и обновление зависимостей через ng update. Отладка выполняется через ng serve --open с инспекцией DevTools, включая анализ жизненного цикла и потоков RxJS.

Полная Справка
Angular Element/Method|Description|Syntax|Example|Notes
ng new|Создаёт новый проект|ng new app-name|ng new myApp|Включает базовую конфигурацию
ng generate component|Генерирует компонент|ng g c name|ng g c dashboard|Создаёт полный каркас компонента
ng generate service|Генерирует сервис|ng g s name|ng g s auth|Область действия root по умолчанию
ng build|Собирает проект|ng build [options]|ng build --prod|Оптимизация для продакшн
ng serve|Запускает dev сервер|ng serve [options]|ng serve --open|Разработка и тестирование
ng lint|Проверка кода|ng lint|ng lint|Использует ESLint
ng test|Запуск unit тестов|ng test|ng test|Karma + Jasmine
ng e2e|End-to-End тестирование|ng e2e|ng e2e|Protractor
ng add|Добавление пакета|ng add package|ng add @angular/material|Автоматическая настройка
ng update|Обновление пакетов|ng update|ng update @angular/core|Сохраняет совместимость
ng deploy|Публикация проекта|ng deploy|ng deploy|В зависимости от адаптера
ng analytics|Управление телеметрией|ng analytics off|ng analytics on|Конфиденциальность
ng config|Настройка параметров|ng config key value|ng config cli.warnings.versionMismatch false|Управление CLI
ng doc|Документация|ng doc topic|ng doc router|Быстрый доступ
ng version|Версии Angular|ng version|ng v|Диагностика
ng extract-i18n|Экспорт сообщений i18n|ng extract-i18n|ng xi18n|Многоязычность
ng generate module|Генерация модуля|ng g m name|ng g m shared|Модульная структура
ng cache clean|Очистка кэша|ng cache clean|ng cache clean|Ускорение сборки
ng generate pipe|Генерация pipe|ng g p name|ng g p capitalize|Преобразование данных
ng completion|Автодополнение CLI|ng completion|ng completion|Удобство работы

📊 Complete Angular Properties Reference

Property Values Default Description Angular Support
strict true/false true Строгий режим компиляции v12+
inlineStyle true/false false CSS внутри компонента v10+
inlineTemplate true/false false Шаблон внутри компонента v10+
skipTests true/false false Пропуск генерации тестов v8+
routing true/false false Добавление модуля роутинга v9+
style css/scss/sass css Выбор стилей v8+
prefix string app Префикс селектора v8+
skipInstall true/false false Пропуск установки зависимостей v8+
packageManager npm/yarn/pnpm npm Менеджер пакетов v11+
strictTemplates true/false true Строгая проверка шаблонов v13+
minimal true/false false Минимальная структура проекта v14+
standalone true/false false Компоненты standalone v15+

Резюме и следующие шаги
Справочник CLI является основой эффективного Angular-разработчика. Он обеспечивает автоматизацию, стандартизацию и ускоряет создание компонентов, модулей и сервисов.
Изучив CLI, разработчик понимает архитектуру компонентов, управление состоянием и поток данных, оптимизацию производительности и обеспечение безопасности.
Дальнейшие шаги включают изучение Lazy Loading, Standalone Components и State Management (NgRx). Практическое применение CLI в реальных проектах закрепляет знания.
Рекомендуется использовать официальную документацию Angular и инструменты, такие как Angular DevTools и Schematics, для создания индивидуальных автоматизаций CLI.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

3
Вопросы
🎯
70%
Для Прохождения
♾️
Время
🔄
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху