Использование клиента Lit SSR¶
Этот пакет входит в семейство экспериментальных пакетов Lit Labs. Руководство по использованию программ Labs в производстве см. на странице Lit Labs.
Lit SSR генерирует статический HTML, который браузер может разобрать и раскрасить без использования JavaScript. (Браузеры, не поддерживающие декларативный Shadow DOM, потребуют некоторого JavaScript-полифилла для компонентов Lit, созданных для использования Shadow DOM). Для страниц со статичным содержимым это все, что нужно. Однако если содержимое страницы должно быть динамичным и реагировать на действия пользователя, потребуется JavaScript для повторного применения этой реактивности.
Способ повторного применения реактивности на стороне клиента зависит от того, используете ли вы автономные шаблоны Lit или компоненты Lit.
Автономные шаблоны Lit¶
"Гидратация" шаблонов Lit - это процесс повторного связывания выражений шаблонов Lit с узлами, которые они должны обновлять в DOM, а также добавление слушателей событий. Для гидратации шаблонов Lit в пакете @lit-labs/ssr-client
предусмотрен метод hydrate()
. Перед обновлением контейнера, отрендеренного на сервере с помощью render()
, необходимо сначала вызвать hydrate()
для этого контейнера, используя тот же шаблон и данные, которые были использованы для рендеринга на сервере:
1 2 3 4 5 6 7 8 9 10 11 |
|
Компоненты Lit¶
Чтобы вновь применить реактивность к компонентам Lit, необходимо загрузить определения пользовательских элементов для их обновления, включить обратные вызовы их жизненного цикла, а шаблоны в теневых корнях компонентов должны быть гидратированы.
Обновление может быть достигнуто простой загрузкой модуля компонента, который регистрирует пользовательский элемент. Это может быть сделано путем загрузки пакета всех определений компонентов для страницы, или может быть сделано на основе более сложной эвристики, когда только подмножество определений загружается по мере необходимости. Чтобы обеспечить гидратацию шаблонов в теневых корнях LitElement
, загрузите модуль @lit-labs/ssr-client/lit-element-hydrate-support.js
, который устанавливает поддержку для LitElement
, чтобы автоматически гидратировать себя, когда он обнаруживает, что был рендерингом сервера с декларативным теневым DOM. Этот модуль должен быть загружен до загрузки модуля lit
(включая любые модули компонентов, которые импортируют lit
), чтобы обеспечить правильную установку поддержки гидратации.
При серверном рендеринге компонентов Lit содержимое их теневого корня выдается внутри <template shadowroot>
, также известного как Declarative Shadow Root. Декларативные теневые корни автоматически присоединяют свое содержимое к теневому корню родительского элемента шаблона при разборе HTML без использования JavaScript.
Пока все браузеры не включат поддержку декларативных теневых DOM, доступен очень маленький полифилл, который можно вставить в страницу. Это позволит вам использовать SSR сейчас для всех браузеров с включенным JavaScript и постепенно решать задачи, не связанные с JavaScript, по мере распространения функции на другие браузеры. Использование template-shadowroot
polyfill описано ниже.
Загрузка @lit-labs/ssr-client/lit-element-hydrate-support.js
¶
Он должен быть загружен перед любыми модулями компонентов и библиотекой lit
.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Если вы собираете свой код, убедитесь, что @lit-labs/ssr-client/lit-element-hydrate-support.js
импортирован первым:
1 2 3 |
|
Использование полифилла template-shadowroot
¶
Приведенный ниже HTML-фрагмент включает опциональную стратегию скрытия тела до загрузки полифилла, чтобы предотвратить смещение макета.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
Комбинированный пример¶
В этом примере показана стратегия, сочетающая загрузку полифилла @lit-labs/ssr-client/lit-element-hydrate-support.js
и полифилла template-shadowroot
и обслуживающая страницу с компонентом SSRed для гидратации на стороне клиента.