Angular Schematics - довольно новая разработка в экосистеме Angular. С помощью Angular Schematics вы можете преобразовать свой код с помощью шаблонов и функций изменения кода, которые можно интегрировать в любой проект Angular и соответствующим образом преобразовать ваш проект.

В этой серии мы сначала рассмотрим одну из новейших схем Angular, а затем рассмотрим различные функции, встроенные в схемы, чтобы вы могли создавать свои собственные расширенные схемы для ускорения ваших собственных проектов.

В будущих публикациях мы рассмотрим код нашей новейшей схемы Angular и способы создания собственных схем. Но теперь пора представить…

ngMomentum

NgMomentum - это схема, построенная на Angular, которая делает одно: помогает ускорить ваши проекты, следуя всем лучшим практикам. ngMomentum автоматически заботится об именах, размещении кода и подключении, поэтому вы можете сосредоточиться на реализации функций, а не на настройке.



BottleRocketStudios / ng-momentum
ng-momentum - Угловая схема« Momentum
от Bottle Rocket, созданная специально для создания лучших в своем классе Angular… github.com»



С чего начать с ngMomentum

Предположение: вы начинаете новый проект Angular и хотите быстро начать работу, но не хотите срезать углы, когда дело касается правильной архитектуры приложения.

Для этого мы рекомендуем начать с создания нового проекта Angular с помощью интерфейса командной строки.

Боковое примечание: Если вам нужна помощь в запуске Angular из командной строки, просмотрите следующую ссылку о Angular CLI.

С установленным Angular CLI нам просто нужно создать новый проект.

$ cd to/wherever/you/are/putting/your/project
$ ng new my-momentum-project

Это создает новый проект Angular с использованием схем, созданных командой Angular.

Это мило. Мы можем начать делать все, что необходимо для нашего приложения. Однако мы обнаружили, что эта структура плохо масштабируется, и есть еще несколько функций, которые потребуются большинству крупномасштабных приложений. Добавление ngMomentum в ваш проект придаст вашему приложению структуру, лучше подходящую для крупномасштабных приложений.

$ ng add ng-momentum

Когда вы добавляете ngMomentum в свой проект, мы формируем структуру папок и добавляем функции, которые мы сочли полезными при создании крупномасштабных приложений. Вы можете отказаться от этих дополнительных функций, таких как функции PWA и Angular Material.

В следующих примерах показано, как исключить эти функции.

# skips PWA features
$ ng add momentum --includePwa=false
# uses bootstrap instead of Material
$ ng add momentum --uiFramework=bootstrap
# uses basic HTML, no framework
$ ng add momentum --uiFramework=basic

Предполагая, что вы в порядке с основными параметрами, результат будет выглядеть следующим образом.

Мы предоставляем базовый контент, который поможет вам начать работу (домашнее представление и представление «страница не найдена»), а также создадим отдельные основные и общие модули. Вы увидите, что мы также интегрировали Материал (или выбранную вами платформу пользовательского интерфейса) и сценарии PWA (если они выбраны), а также подготовили все ваши модульные тесты и базовую структуру папок для будущих дополнений.

Добавить функции PWA

Мы добавили кое-что, чтобы упростить PWA, но вам потребуются некоторые настройки из официальной схемы @angular/pwa. Чтобы использовать его, просто добавьте в схему.

$ ng add @angular/pwa

Хорошо, хватит настройки, пора быстро выплюнуть много хорошего кода!

Я надеюсь убрать этот шаг, вызвав напрямую @ angular / pwa. В настоящее время существует проблема с git вокруг этой функции / проблемы. Способ освобождения @ angular / pwa мешает мне сделать этот шаг таким же плавным, как @ angular / material. В скором времени я могу отказаться от этого шага и удалить этот подраздел.

ngMomentum: CRUD

Когда строительные леса готовы и ваш проект готов, следующее, на чем вам нужно сосредоточиться, - это создать свой проект. Часто нам необходимо создать операции CRUD (или варианты операций CRUD) для службы, чтобы пользователи могли правильно администрировать ресурс. Почему бы не пропустить все усилия и монтажные работы вашего проекта и не выплюнуть код за вас? Что ж, ngMomentum может позаботиться об этом за вас.

В следующем примере мы показываем, как вы можете указать ngMomentum URL-адрес, чтобы он обрабатывал все остальное за вас. Если у вас нет URL-адреса, мы покажем вам, как ввести обозначение объекта дальше.

Просто попробуйте следующую команду:

$ ng g ng-momentum:crud 
    --name=heros \
    --url=http://localhost:3000/superheros.json

ТАКОЕ много кода выплевывают. Представления на основе материалов (или bootstrap, или vanilla HTML), сервисы, маршрутизаторы, проверки ввода и средства защиты вместе с каждым модульным тестом, на который вы могли когда-либо надеяться. Все готово для использования / изменения / развертывания. А взгляды? Неплохо, если я так говорю.

С помощью одного звонка вы позаботились о нескольких днях работы, набора текста, разочарования и тестирования. Нет службы, чтобы ударить? Попробуйте немного отрегулировать ту же команду.

$ ng g ng-momentum:crud \ 
    --name=heros \
    --obj="{\"id\":\"number\",\"name\":\"string\"}"

Вместо того, чтобы обращаться к сервису, вы можете просто указать правильный объект для моделирования и иметь весь свой код именно так, как вы хотите. Есть немало других сюрпризов и возможностей, если вы заглянете в документацию (я рекомендую вам это сделать).

ngMomentum: Просмотр

Это будет полу-спорным, но такое разграничение оказалось успешным для крупных проектов. Разработчики часто путаются, когда начинают создавать компоненты в Angular, оставляя папку components/, чтобы она стала свалкой визуальных элементов. Были шаблоны, такие как атомный дизайн, который пытается различать компоненты - только для того, чтобы разработчики пытались решить, является ли компонент атомом, молекулой или организмом. Со временем некоторые компоненты постепенно усложняются и изменяют свою область видимости, что приводит к еще большей путанице в кодовой базе.

Я это упрощаю. У вас либо Просмотры, либо Компоненты. Представления - это, в частности, визуальный компонент, к которому есть путь. Компоненты могут быть любыми визуальными компонентами (кроме представлений). Вот и все. У одного есть путь к нему, у другого его нет. Это значительно упрощает описание \, и когда вы переходите либо в папку component/, либо в папку views/, вы знаете, чего ожидать.

Примечание. Ваша views/ папка должна быть структурой вашего приложения, а вложенные представления и пути должны быть вашей вложенной структурой папок.

После настройки этой информации ngMomentum обрабатывает создание представлений за вас. Вы уже видели этот процесс на ng-momentum:crud операции.

Если вы хотите создать новые компоненты, Angular Schematic уже сделает это за вас. Если вы хотите создать представление с маршрутизацией, охраной, модульными тестами, практически всем, тогда вы используете ngMomentum. Вот пример:

$ ng g ng-momentum:view \ 
    --name=edit-hero --template=form \
    --eager=false --skipVo=true --skipService=true \
    --vo=hero --voPath=/src/app/vos/hero \
    --service=heros --servicePath=/src/app/services/heros

Это создаст новое представление «формы», которое лениво загружается с именем «герои» с использованием Hero VO и HerosService, которые вы создали ранее.

Вы можете выбирать из нескольких шаблонов, свойств uiFramework, vo и других функций. Опять же, документация - лучшее место, чтобы увидеть все варианты.

ngMomentum: Сервис

Сервисы очень просты, это способ взаимодействия с данными вне вашего приложения. По умолчанию мы создаем для вас простой способ создания операций CRUD вместе со всем модульным тестированием.

ng g ng-momentum:service --name=shoe --operations=crudl

Это создаст новую службу с именем ShoesService, которая включает операции create, update, list, read и delete вместе с модульными тестами в папке services/. Как и в других разделах, здесь много опций, и я рекомендую ознакомиться с документацией.

ngMomentum: Модель

Это также раздел, который вы можете или не можете использовать на самом деле, но он может быть полезен в правильной ситуации. Если вам нужны данные в централизованном хранилище и несколько компонентов взаимодействуют с этими данными, тогда вы захотите использовать Модель. После внедрения модели в несколько компонентов многие области вашего приложения могут быть всегда связаны с истиной. В ngMomentum модели бывают разных форматов. ngMomentum создает для вас либо basic модель (без внутренних функций), list модель (загружает коллекцию данных), либо selected object модель (может создавать, обновлять, удалять и загружать определенный объект данных). Модели также можно использовать для кэширования ваших данных и большего контроля. Однако вы можете не найти их вообще полезными. Так что решать вам. Вот один из примеров того, как его использовать.

ng g ng-momentum:model --name=cars --template=list

Это создаст CarsModel, который может загрузить список Car ВО. Наряду с моделью это создаст сервис и VO, необходимые для того, чтобы это работало, и все модульные тесты, которые вам нужны. Опять же, пожалуйста, ознакомьтесь с документацией.

Используйте ngMomentum!

Мы надеемся, что вы действительно используете ngMomentum и дадите нам свой отзыв. Прямо сейчас мы рады поделиться им, так как ngMomentum основан на многолетнем опыте разработки приложений для предприятий и магазинов. Мы считаем, что если вы решите использовать его, он сослужит вам хорошую службу. Как упоминалось ранее, проверьте официальное расположение на github и дайте нам знать, что вы думаете.



BottleRocketStudios / ng-momentum
ng-momentum - Угловая схема« Momentum
от Bottle Rocket, созданная специально для создания лучших в своем классе Angular… github.com»



Придумывая угловые схемы

Если вы последуете за мной, то в следующих нескольких статьях вы увидите, что мы углубимся в Схемы дальше, чем некоторые другие. Учитесь на страданиях, которые я перенес, и начните создавать что-нибудь удивительное. И если вы используете ngMomentum в своих проектах, дайте мне знать. Я хотел бы получать отзывы и расширять их, чтобы они были еще более полезными.