Я новичок в реактивном программировании и пытаюсь научиться, разрабатывая приложение Angular + Rx Js. Идея приложения состоит в том, чтобы использовать функции github c, такие как «Управление репо», «Управление ветвями» и т. Д. c. Это приложение будет иметь левую навигацию, которая будет отображать все репозитории, связанные с авторизованным пользователем, нажав в репо принесет все ветки, связанные с репо, нажатие на ветку приведет к переносу всех файлов в ветку. Пользователь может добавлять / редактировать / удалять ветку, добавлять / редактировать / удалять файлы в ветке (обычные варианты использования ...), в основном концепция ленивой загрузки.
Моя модель данных
Repository
-----UserDetails
-----Array[BranchArtifact]
-------------Array[Files] called currentElements
-------------Array[Files] called changedElements
-------------Array[Files] called conflictElements
Идея 1:
Имейте BehaviorSubject<Array<Repository>> / method1()
, который будет возвращать подключенный Observable<Array<Repository>>
, который может быть подписан в компоненте, который будет отображать узлы навигации дерева уровня репо (эта часть визуализации будет отвечать только за репо операции уровня, такие как add / del repo)
Имейте BehaviorSubject<Array<BranchArtifact>> / method2()
, который будет возвращать подключенный Observable<Array<BranchArtifact>>
, который может быть подписан в компоненте, который будет отображать узлы навигации дерева уровня Repo (эта часть визуализации будет ответственной только для операций уровня Branch, таких как add / del Branch)
... и так далее для каждого уровня с отложенной загрузкой
Эта идея кажется, что вложенный объект сглаживается на уровне потока, но затем на стороне пользовательского интерфейса по-прежнему косвенно управляется вложенным способом (поскольку каждый вложенный уровень должен будет ie вернуться к своему родительскому узлу)
Идея 2:
Имейте один BehaviorSubject<Array<Repository>> / Observable<Arra<Repository>>
, и при каждом щелчке по узлу дерева извлекайте нужные данные подуровня, обновляйте субъект возвращенным значением и позволяйте подписчикам выводить обновленные данные (поскольку поток всегда будет генерировать объект репозитория (ов)) и соответствующим образом управлять пользовательским интерфейсом (может быть выдан тип изменения, чтобы облегчить работу подписчикам). Это больше похоже на императивный стиль программирования ... В этом дизайне UI logi c должен будет перейти к правильному узлу, чтобы управлять им для каждого значения, испускаемого в потоке.
Я прошел через много руководств, видео и технических разговоров на эту тему и не смог найти ничего, кроме базового примера структуры данных c. Любая помощь приветствуется ...
Вопрос к экспертам здесь,
- Хороши ли эти идеи
- Думаю ли я реактивно
- Если Я совершенно не в теме, пожалуйста, укажите на что-нибудь, что поможет мне понять ...
- Если есть что-то попроще, пожалуйста, предложите