Уместно ли разбиение JS веб-приложения на отдельные страницы?

После продолжительной работы над проектом, в связи со своей невысокой квалификацией только сейчас столкнулся с проблемой поискового продвижения.

Мое одностраничное веб-приложение написано на Clojure и ClojureScript (который как известно компилируется в JavaScript).
При открытии страницы сервер отдает HTML каркас страницы:
<html>
{мета и opengraph}
<body>
<div id="app"></div>
</body>
</html>


Остальной контент в div#app добавляет JS. Проблема в том что как я понял поисковые боты (кроме Google) видят только каркас присланный от сервера. Вопрос заключается в том, имеет ли смысл разбить приложение на несколько частей, часть HTML важного для поисковиков будет сгенерирована на сервере (например meta теги, заголовки и базовая разметка) а остальное будет добавлено уже JS и так для всех страниц? Ну тогда это уже не будет одностраничным веб-приложением. Использовать #! категорически противно, так как яндекс поощряет а гугл наказывает за это. Может быть мне имеет смысл переделать все с 0 и создать изоморфное приложение (там где весь JS и HTML генерируется на сервере)?

Хочу добавить что _escaped_fragment_ теперь осуждается Google на основании этой статьи googlewebmastercentral.blogspot.se/2015/10/depreca....
  • Вопрос задан
  • 448 просмотров
Решения вопроса 1
@Yeshua Автор вопроса
Господа, благодарю вас за ваше внимание. Я полагаю, что решил данную проблему, к сожалению не хочу делать поспешных выводов и тем более давать скоротечных, не проверенных в боевом проекте решений. Первые тесты показали что я достиг чего хотел, как только это подтвердят поисковые боты тем что проидексируют мои страницы я обязательно напишу статью на эту тему и дополню свой ответ.

Если без подробностей гиоптеза заключается в следующем:
1. Бот (посетитель) заходит на любую страницу моего приложения;
2. Сервер отдает каркас станицы с тегом в котором содержаться заголовок и описание;
3. Если это бот или браузер с выключенным javascript тогда он увидит содержание тега ;
4. Если это пользователь приложения он видит полосу загрузки и далее результат выполнения JS кода с аналогичным заголовком и описанием + всеми плюшками моего приложения;
5. Повторить п.1 при смене location, не перезагружая страницу, но подгрузив с сервера новый каркас (созданный специально для страницы);

Все это работает, только я сам пока не понял как именно (:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
swanrnd
@swanrnd
Издатель HTML5 игр
Есть страница /index с ссылкой на /aboutus

Должно быть так:
1) при клике загрузки по ссылке /index и /aboutus грузиться генерируемая страница на сервере.
2) при переходе по ссылке должна грузится информация на AJAX
3) если JS отключен, то обычный переход по ссылке.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы