Роб Вормолд: Это гостевой пост от Виктора Савкина из основной команды NgRx. NgRx - это набор библиотек, которые позволяют разработчикам Angular более эффективно создавать большие проекты.
Команда надеется, что в этом выпуске многое вам понравится. Некоторые из основных моментов:
- Официальная поддержка отложенной загрузки
- Упрощенное тестирование
- Обновленная интеграция с роутером
Конечно, в этом выпуске намного больше замечательных вещей (улучшенная эргономика разработчика и сообщения об ошибках для начинающих). Так что загляните в репозиторий платформы ngrx, чтобы узнать больше.
Поддержка отложенной загрузки
Несмотря на то, что всегда можно было использовать отложенную загрузку с NgRx (см. Здесь), это было непросто: приходилось вручную управлять редукторами загрузки и выгрузки. В этом выпуске мы добавили официальную поддержку отложенной загрузки.
Подобно маршрутизатору Angular, NgRx использует forRoot для основного модуля NgModule и forFeature для модуля с отложенной загрузкой.
Улучшенное тестирование
NgRx четко разделяет пользовательский интерфейс, управление состоянием и побочные эффекты. Уже одно это делает тестирование более простым и приятным, но мы всегда знали, что можем добиться большего.
Поскольку редукторы - это синхронные чистые функции, их тестирование всегда было таким же простым. Но тестирование классов эффектов, которые в значительной степени полагаются на RxJS, было сложным.
Сообщество RxJS придумало отличное решение для упрощения тестирования наблюдаемых RxJS - мраморное тестирование, которое делает тесты наглядными и удобными для чтения. Раньше было непросто использовать шарики для тестирования классов эффектов, но это изменилось с NgRx 4.
Обновленная интеграция маршрутизатора
NgRx помогает решить одну из самых сложных проблем в разработке программного обеспечения - управление состоянием. Но это не единственная часть истории государственного управления. Другой - маршрутизатор. И именно поэтому обеспечение совместной работы NgRx и маршрутизатора было для нас первоочередной задачей.
Основная проблема, с которой мы столкнулись с интеграцией маршрутизатора NgRx 2, заключалась в том, что после этого произошла синхронизация магазина и маршрутизатора. Это означало, что резолверы и охранники не могли получить доступ к новому состоянию, что делало их менее полезными. Это также означало, что магазин не мог отменить навигацию.
Чтобы исправить это, нам пришлось сделать роутер Angular более подключаемым. И как только это было сделано, мы переработали интеграцию, чтобы сделать обновление магазина частью процесса навигации.
Что случилось с NgRx 3?
NgRx долгое время была полуофициальной библиотекой управления состоянием для Angular. Это важная часть экосистемы Angular. Вот почему мы хотели убедиться, что номера версий соответствуют основной структуре. Прочтите этот пост Игоря Минара или выпуск Angular 4, чтобы узнать больше.
Поддержка NgRx в Open Collective
Нас часто спрашивают, как люди могут поддержать разработку NgRx. Вы можете поддержать NgRx через нашу Открытую коллективную страницу. Это покроет расходы на хостинг, непрерывную интеграцию и другие различные расходы на разработку.
Учить больше
Мы приложили много усилий, чтобы сделать переход с NgRx 2 на NgRx 4 простым и в значительной степени механическим. Прочтите Руководство по переходу с V2 на V4 для получения дополнительной информации.
Вы также можете узнать больше о том, почему вы можете использовать NgRx 4 и как его эффективно использовать, в этих ресурсах.
* Использование NgRx 4 для управления состоянием в приложениях Angular
* NgRx 4: Расширенные шаблоны и методы
* Комплексное введение в @ ngrx / store
Виктор Савкин - соучредитель nrwl.io, предоставляющий Angular консалтинг корпоративным командам. Ранее он входил в основную команду Angular в Google и внес значительный вклад в Angular, включая внедрение зависимостей, обнаружение изменений, формы и модули маршрутизатора.