Я создавал приложения, управляемые данными, около 18 лет, а последние два года я успешно использую angular для своих приложений на основе больших форм и грубых приложений. Вы знаете, классический сервер базы данных sql с сотнями таблиц с миллионами записей. Пока все хорошо.
Теперь я портирую / перепроектирую настольное приложение с примерно 50 формами, все сложные, все полностью функциональные, "умные". Мой подход в последние пару лет заключался в том, чтобы просто тесно взаимодействовать с API остального бэкэнда для извлечения, вставки или обновления данных по мере необходимости, и все работает нормально.
Затем я наткнулся на ngrx и точно понимаю, как он работает,что он делает и почему это хорошо для «реактивного» приложения.
Моя проблема заключается в следующем: в обычном жизненном цикле систем, о которых я говорил, вам всегда приходится иметь дело со свежими данными и всегда иметьвсе рассказать серверу. Почти никакие данные в таких приложениях не могут безопасно храниться локально, поскольку транзакционные системы полагаются на централизованное взаимодействие данных. Нет такой вещи, как «эй, давайте сохраним продажи этого сотрудника здесь для дальнейшего использования».
Так почему так важно управлять локальным «магазином», когда большая часть моих данных нестабильна? Я понимаю, почему это было бы полезно для глобальных данных приложения, таких как профиль пользователя или общее состояние пользовательского интерфейса, но для самих основных данных? Я не понимаюВы запрашиваете данные, вставляете эти данные в форму, они обрабатываются пользователем и отправляются обратно на сервер. Эти данные больше не нужны, и если они вам нужны, вы запрашиваете их снова, поскольку они могли бы изменить свое состояние с момента последнего взаимодействия с ним.
Я не понимаю, насколькоесли это состояние столь нестабильно, придется обращаться в локальный магазин и весь шаблон.
Говорят, что обнаружение изменений не масштабируется, но я создал несколько действительно больших веб-приложений с простым шаблоном http-сервисаи он работает просто отлично, потому что большая часть дерева компонентов в любом случае уничтожается, когда вы переходите в другое место в приложении, а любые предыдущие подписки становятся бесполезными. Даже с большими громоздкими формами, никогда не бывает такой большой проблемой внутренняя работа формы, как требование внешней «помощи» от магазина. На мой взгляд, «состояние» формы является проблемой этой формы только в этот момент. Поддерживать ли дерево компонентов в синхронизации? никогда не было проблем с этим раньше ... даже для сложных деревьев с большим количеством общих данных, мастер детализации в конечном итоге представляет собой плоский шаблон, если все данные есть.
Для других компонентов, таких как сетки, диаграммы, доклад и т. д., то же самое относится и к. Они получают данные, которые им нужны, а затем "пух" ушли.
Итак, теперь вы видите мое мышление. Я пытаюсь изменить это на что-то лучшее. Почему я пропускаю шаблон редукса?