[стрим в субботу 2019-03-09] Infinite scroll REST API, интеграция клиента [не завершили]

Снова суббота и снова стрим.

Писали REST API для бесконечного списка медиа. Сделали серверную часть и начали интегрировать клиент. По ходу дела узнали что:

  • Mongoose model мутируют инстансы каждым методом. Поэтому не получилось посчитать количество элементов и потом лимитировать выдачу для одного запроса, не создавая нового инстанса
  • shufflejs имеет 2 метода для обновления расскладки элементов. Пока дергаем оба, но это грязно, потом будем оптимизировать для каждой причины изменений расскладки отдельно.
  • для shufflejs нужно передергивать расскладку после загрузки каждого media элемента потому что размеры доступны только после загрузки, а размеры нужны для рассчитвания расскладки. Оставили реализацию “влоб”, требует оптимизации в будущем.
  • parcel иногда не работает корректно с d.ts файлами, из за чего сборка не проходит. Пришлось переименовать файл в .ts.
  • нужно разделять описание схемы (структуры хранимой в бд), схемы для API (форма данных, отдаваемых сервером) и схемы для клиентского состояния (в нашем случае appState - mobx объекте). Раньше объект для клиента я формировал на сервере, темерь сервер отдает объект в API, а клиент API объект приводит к ожидаемому виду.
  • В конце высказал мнение о GraphQL

Следующий стрим как всегда в субботу в 20 00 по CET. https://www.youtube.com/watch?v=_fM_Vlpop1Q
Записи предыдущих стримов сохраняются ютюбе https://www.youtube.com/channel/UC4Cy-f6UNntUavvx8rtC1zQ
Код проекта https://github.com/podgorniy/media-manager