Генерация кода с помощью схем¶
28.02.2022
Схема — это генератор кода на основе шаблона, который поддерживает сложную логику. Это набор инструкций для преобразования программного проекта путем генерации или модификации кода.
Схемы упаковываются в коллекции и устанавливаются с помощью npm.
Коллекция схем может стать мощным инструментом для создания, изменения и поддержки любого программного проекта, но особенно полезна для настройки проектов Angular под конкретные нужды вашей организации. Например, вы можете использовать схемы для создания часто используемых шаблонов пользовательского интерфейса или конкретных компонентов, используя предопределенные шаблоны или макеты.
Используйте схемы для обеспечения соблюдения архитектурных правил и соглашений, делая ваши проекты последовательными и взаимодействующими.
Схемы для Angular CLI¶
Схемы являются частью экосистемы Angular. В Angular CLI используются схемы для применения преобразований к проекту веб-приложения.
Вы можете изменять эти схемы и определять новые, чтобы, например, обновить свой код, чтобы исправить разрушающие изменения в зависимостях, или добавить новый параметр конфигурации или фреймворк в существующий проект.
Схемы, включенные в коллекцию @schematics/angular
, запускаются по умолчанию командами ng generate
и ng add
. Пакет содержит именованные схемы, которые настраивают опции, доступные в CLI для подкоманд ng generate
, таких как ng generate component
и ng generate service
.
Подкоманды для ng generate
являются сокращением для соответствующей схемы.
Чтобы указать и сгенерировать конкретную схему или набор схем, используйте длинную форму:
1 |
|
или
1 |
|
Конфигурирование схем CLI¶
JSON-схема, связанная со схемой, сообщает Angular CLI, какие опции доступны командам и подкомандам, и определяет значения по умолчанию. Эти значения по умолчанию можно отменить, задав другое значение опции в командной строке.
См. раздел Конфигурация рабочего пространства для получения информации о том, как изменить параметры генерации по умолчанию для вашего рабочего пространства.
JSON-схемы для схем по умолчанию, используемых CLI для генерации проектов и частей проектов, собраны в пакете @schematics/angular
. Схема описывает опции, доступные CLI для каждой из подкоманд ng generate
, как показано в выводе --help
.
Разработка схем для библиотек¶
Как разработчик библиотек, вы можете создавать собственные коллекции пользовательских схем для интеграции вашей библиотеки с Angular CLI.
-
Схема add позволяет разработчикам установить вашу библиотеку в рабочее пространство Angular с помощью
ng add
. -
Схема генерации может указать подкомандам
ng generate
, как изменять проекты, добавлять конфигурации и скрипты, а также создавать артефакты, определенные в вашей библиотеке. -
Схема update может указать команде
ng update
, как обновить зависимости вашей библиотеки и скорректировать изменения при выпуске новой версии.
Подробнее о том, как они выглядят и как их создавать, см:
Добавление схем¶
add schematic обычно поставляется вместе с библиотекой, чтобы библиотека могла быть добавлена в существующий проект с помощью ng add
. Команда add
использует ваш менеджер пакетов для загрузки новых зависимостей и вызывает сценарий установки, который реализован в виде схемы.
Например, схема @angular/material
указывает команде add
установить и настроить Angular Material и тематизацию, а также зарегистрировать новые стартовые компоненты, которые могут быть созданы с помощью ng generate
. Посмотрите на эту схему как на пример и образец для вашей собственной схемы add.
Партнерские и сторонние библиотеки также поддерживают Angular CLI со схемами добавления. Например, @ng-bootstrap/schematics
добавляет ng-bootstrap в приложение, а @clr/angular
устанавливает и настраивает Clarity from VMWare.
Схема add
может также обновлять проект с изменениями конфигурации, добавлять дополнительные зависимости (например, полифиллы), или размещать код инициализации, специфичный для пакета. Например, схема @angular/pwa
превращает ваше приложение в PWA, добавляя манифест приложения и рабочий сервис.
Схемы генерации¶
Схемы генерации — это инструкции для команды ng generate
. Документированные подкоманды используют схемы генерации Angular по умолчанию, но вы можете указать другую схему (вместо подкоманды) для генерации артефакта, определенного в вашей библиотеке.
Angular Material, например, предоставляет схемы генерации для компонентов пользовательского интерфейса, которые он определяет. Следующая команда использует одну из этих схем для создания таблицы Angular Material <mat-table>
, которая предварительно настроена с источником данных для сортировки и пагинации.
1 |
|
Обновление схем¶
Команда ng update
может быть использована для обновления зависимостей библиотек вашего рабочего пространства. Если вы не указываете никаких параметров или используете опцию help, команда исследует ваше рабочее пространство и предложит библиотеки для обновления.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Если вы передадите команде набор библиотек для обновления (или флаг --all
), она обновит эти библиотеки, их одноранговые зависимости и одноранговые зависимости, которые зависят от них.
Если есть несоответствия (например, если одноранговые зависимости не могут быть сопоставлены простым semver range), команда выдает ошибку и ничего не меняет в рабочей области.
Мы не рекомендуем принудительно обновлять все зависимости по умолчанию. Попробуйте сначала обновить конкретные зависимости.
Подробнее о том, как работает команда ng update
, смотрите Команда обновления.
Если вы создаете новую версию вашей библиотеки, которая вносит потенциально разрушающие изменения, вы можете предоставить update schematic, чтобы команда ng update
автоматически устранила все такие изменения в обновляемом проекте.
Например, предположим, вы хотите обновить библиотеку Angular Material.
1 |
|
Эта команда обновляет как @angular/material
, так и его зависимость @angular/cdk
в файле package.json
вашего рабочего пространства. Если оба пакета содержат схему обновления, которая охватывает миграцию с существующей версии на новую, команда запускает эту схему на вашем рабочем пространстве.