Olddevs UI3.38.0
Рецепты

Загрузчик Части для движка, Скелет и «Повторить»

Свой Инструмент, чей Tiptap приходит отдельным чанком, — и что видит автор, пока чанк едет или не доехал.

Часть для движка можно отдать не массивом, а загрузчиком — функцией с динамическим импортом. Тогда модуль с описанием Инструмента можно импортировать и на сервере (правила Схемы — данные), а Tiptap и React уходят в отдельный чанк.

Loading the engine part…

Нажмите «Restart the editor» — полторы секунды поле будет Скелетом. Отметьте «Fail the first load» и перезапустите: появится ошибка поля и кнопка «Повторить».

Как устроено

  • Готовность ждёт загрузчики. Движок создаётся, когда отработали загрузчики всех Инструментов набора: Схема фиксируется при создании, и Блоки без своей Части для движка потерялись бы при разборе. До того методы Хэндла тихие, а onReady не вызван.
  • Скелет — рамка, место Панели и Документ, очищенный Схемой, без ввода и без прыжка высоты. Блок, чей загрузчик ещё не отработал, виден текстом. На сервере Скелет — только рамка.
  • Сбой загрузки — ошибка поля «Редактор не запустился» и «Повторить». Кнопка зовёт заново только упавшие загрузчики; Документ всё это время виден.
  • Промис кэшируется на функции загрузчика: второй Редактор с тем же Инструментом ничего не ждёт. Поэтому загрузчик — одна функция на модуль, а не новая стрелка на каждый рендер. Пример строит новый загрузчик на каждый перезапуск только ради показа.

Блок кода и таблица в пресете full тоже ленивые: их Часть для движка приходит отдельным чанком. Чтобы чанк пришёл вместе со страницей, поставьте на него modulepreload — адрес берите из манифеста сборщика. Цена «старта» и «полного» — в «Сколько стоит импорт».

На этой странице