Шесть типов блоков на одной странице
Страница — это список блоков и больше ничего. Выучите шесть штук, и вы выучили всю модель данных.
Шестёрка
Каждый блок — это объект с типом и полями этого типа. На агентных эндпоинтах идентификатор, порядок и признак видимости необязательны: сервер выдаст идентификатор, сохранит присланный порядок и покажет блок. Присылайте их обратно только тогда, когда прочитали страницу и правите её на месте.
| Тип | Нужно | Может быть ещё |
|---|---|---|
| link | label, url | note, image, badge, featured, adult, path, apps, imageFocus |
| socialRow | items из platform и url | до двадцати элементов |
| social | platform, url | counter |
| messenger | platform, handle | label |
| embed | provider, url | title |
| text | content | variant: heading или paragraph |
url — это http или https, либо телефон как tel с кодом страны, либо адрес как mailto. Голое имя хоста тоже принимается и сохраняется с https. Картинки — это ключи хранилища из роута загрузки, а не адреса. У любого блока может быть момент начала и момент конца, вне которых он не рисуется.
Ограничения, которых схема выразить не может
- Короткие пути уникальны внутри страницы: две ссылки не могут быть «shop», и столкновение вернётся ошибкой с названием пути.
- Служебные слова — api, go, gate, media — коротким путём быть не могут.
- Восемьдесят блоков на страницу — потолок, и страница, которая к нему приближается, уже слишком длинная, чтобы её читали.
- Присланные в обновлении блоки заменяют весь список: частичного слияния нет, потому что у слияния двух списков блоков нет разумного определения.
Форма, которая обычно работает
Одна выделенная ссылка на главное в этом месяце, за ней две-пять обычных в порядке важности, одна строка соцсетей со всеми платформами, кнопка мессенджера или телефона, если обращения приходят так, и текстовый заголовок — только если страница достаточно длинная, чтобы её делить.
Это пять-девять блоков. Помещается в полтора экрана телефона, читается за один проход, и ровно это выдают рецепты в документации для музыканта, ресторана, фотографа или магазина — с заменой существительных и больше ничем.