Идея дизайна Rx js потоков - PullRequest
3 голосов
/ 21 июня 2020

Я новичок в реактивном программировании и пытаюсь научиться, разрабатывая приложение 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. Любая помощь приветствуется ...

Вопрос к экспертам здесь,

  1. Хороши ли эти идеи
  2. Думаю ли я реактивно
  3. Если Я совершенно не в теме, пожалуйста, укажите на что-нибудь, что поможет мне понять ...
  4. Если есть что-то попроще, пожалуйста, предложите
...