Комментарии 3
Спасибо за публикацию, очень интересно. Правильно ли я понял, что выводится не готовый html, а сырой template, и за счёт того, что в шаблонах присутствует разметка, это решает проблему seo?
Как решается отображение иерархии компонентов и списков? Я так понимаю, что построение списков роботы не увидят.
для страницы выводим готовый самый настоящий html, который тоже является шаблоном для основного приложения, но "с резолвингом" в браузере, это достигается загрузкой полного vue в app.vue:
// вместо import { createApp } from 'vue';
import { createApp } from 'vue/dist/vue.esm-bundler';То есть страница несет в себе весь сео-контент, что нам и надо.
для компонентов, которые загружаются динамически и как правило несут в себе поторяющуюся от страницы к странице неуникальную информацию, делаем динамическую загрузку кода js, а код шаблона уже загружен на основную страницу, в моем случае я завернул его в <script>. Он будет проигнорирован поисковиками и правильно, ведь данные для него еще не загружены и смысла читать пустые тэги нет. Да, списки и ссылки которые формирует компонент будут недоступны Яндексу, но я к этому и не стремился. А если такая необходимость есть, то для каждого конкретного случая - свое решение, компромисное конечно и продиктованное исключительно несовершенством Яндекса. Я так понимаю, что гугл умеет получать полный контент страницы даже с динамической загрузкой, но не проверял, а Яндекс видит только то, что загружено сразу.

Простая мультиязычность (multi‑language) для Vue on Laravel через разделение шаблона и кода Vue‑компонента