Vaadin 23 как добавить многоязычное метаописание на страницу

Я знаю, как добавить заголовок мета-страницы в Vaadin 23 — я использую HasDynamicTitle и, таким образом, могу предоставить разные заголовки на разных языках (зависит от локали пользователя) для разных страниц. Но как сделать такую ​​же мету description? Мне нужно иметь возможность предоставлять разные метатеги для разных страниц

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из того, что я вижу, нет удобного API для динамического изменения метаописания. Глядя на то, как реализован HasDynamicTitle, мы видим, что он эффективно делегирует UiInternals.setTitle, который просто планирует вызов Javascript document.title = $0.

Если вы хотите сделать то же самое для мета-описания, вы можете запланировать вызов JS во время инициализации вашего представления, чтобы изменить содержимое мета-тега:

this.executeJs(
  "document.querySelector('meta[name=\"description\"]').setAttribute('content', $0);",
  getLocalizedDescription()
);

Обратите внимание, что это изменяет метаописание только после загрузки страницы и не влияет на содержимое метатега, который находится в исходном HTML-документе. Если вы хотите изменить это, скажем, для целей SEO или создания превью ссылок, вам нужно изучить возможность использования IndexHtmlRequestListener. То же самое относится и к заголовку, метод, который вы используете в данный момент, изменяет заголовок только после загрузки страницы.

Спасибо за подробный ответ. В случае целей SEO, мне просто интересно, существуют ли уже какие-то дополнительные инструменты, которые могут отвлечь нас от такой шаблонной работы с помощью IndexHtmlRequestListener? Такой инструмент/библиотека, например, может автоматически генерировать предварительный просмотр HTML и где-то кэшировать его?

alexanoid 07.11.2022 22:28

Лично не знаю о SEO-решениях, хотя они могут существовать. Может быть, кто-то с большим опытом разработки приложений Vaadin может что-то порекомендовать.

Sascha Ißbrücker 07.11.2022 22:36

Другие вопросы по теме