@kirill-93

Пара вопросов об SPA?

Здравствуйте, 2 простых вопроса от новичка. Я решил изучить vue.js и начать делать правильные одностраничные приложения. Думаю что js фреймворк тут не особо важен, интересует подход.
Вопрос 1: У меня на разных страницах разная структура верстки. Например на главной трехколоночный интерфейс, на некоторых вообще просто блок с текстом, на некоторых горизонтальное меню во всю ширину.
Собственно, как я понял можно двумя способами управлять страницей:
Первый способ - создать один единственный контейнер и инициализировать один объект vue. Примерно так:
<div id="app"></div>

<script>
new Vue({
  el : '#app'
});
</script>


Внутри div#app будут расположены элементы страниц, которые я буду прятать/показывать.

Второй способ - для каждого элемента на странице создавать отдельный объект vue.
Что-то вроде такого:
<div id="left-menu"></div>
<div id="content"></div>

<script>
new Vue({
  el : '#left-menu'
});
new Vue({
  el : '#content'
});
</script>

Внутри каждого объекта управлять его состоянием. Подскажите как правильно сделать. Во всех мануалах/уроках, которые попадались, показываются банальные случаи, типа показать/спрятать квадрат.

Вопрос 2: Как правильно отдавать страницу роботам и поисковикам? Я сейчас делаю так: при запросе на страницу проверяю клиент пользователя, если он из списка роботов/ботов, то отдаю ему страницу, если нет, то перенаправляю запрос на index.php.

Спасибо!
  • Вопрос задан
  • 375 просмотров
Решения вопроса 2
YarkoDzech
@YarkoDzech
будучи трезвым, сдержи все свои пьяные обещания!
1. В vue пока нет стандарта паттернов, но если по уму, то у приложения всегда должен быть один главный компонент. Компонентный подход ввобще очень гибкий и удобный. Для разных страниц (компонент) используйте роутер.
Для состояния есть vuex или тот же хайповый redux

2. Не совсем понятно кто что и кому отдает. У вас статику с сервера отдает ларка? Начиная с 2.3.3 прямо с коробки начал работать ssr (сервер сайд рендеринг), но там аккуратней присутствуют не все хуки жизненного цикла.
Ответ написан
Комментировать
@RidgeA
1. Роутинг на клиенте
https://github.com/vuejs/vue-router

2. SSR
https://ssr.vuejs.org/en/
перенаправлять на index.php - идея плохая, т.к. надо будет поддерживать 2 набора шаблонов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kuftachev
2. По идее, поисковые роботы могут это отслеживать. Отдавать поисковикам и клиентам разные страница - страшное преступление с точки зрения SEO.
Хотя, может есть какой-то легальный способ показать, что это SPA поисковику. Я слышал, что-то​ вроде бы есть, но не факт, что все равно это будет работать корректно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы