Как сделать приложение Angularjs обманутым
Я создаю одностраничное приложение, используя Angular.js. Мой вопрос заключается в том, как сделать приложение сканируемым, потому что маршрутизация выполняется с использованием ng-view на стороне клиента, а сервер просто возвращает простой заголовочный файл.
Ссылка на сайт: http://india-elections.in/
Ответы
Ответ 1
Я реализовал сканирование на своем сайте, используя выше всех пунктов и ниже ссылку
https://developers.google.com/webmasters/ajax-crawling/
http://www.yearofmoo.com/2012/11/angularjs-and-seo.html
http://india-elections.in
Создан статический шаблон с помощью PhantomJs
Ответ 2
Единственное работающее решение, которое я знаю, - это то, что основная группа AngularJS использует для своего веб-сайта документации.
- Сначала они используют историю HTML5 для URL-адресов и резервное копирование с помощью hashbang. URL-адреса с hashbang заставляют Google сканировать их с помощью
_escaped_fragment_
в строке запроса.
- Затем они используют интерполяцию строк и директивы AngularJS на сервере, чтобы отображать шаблоны, поскольку они будут в DOM, когда пользователь загружает страницу, и AngularJS анализирует ее.
- Они передают это Google, и поэтому они имеют одинаковый контент в индексе поиска, как в браузерах пользователей (так что это не клоакинг).
Об этом говорили основные разработчики в группе AngularJS Google. [1] [2] [3]
Также из остальных потоков я думаю, что они используют PhantomJS и NodeJS для анализа страниц.
[1] https://groups.google.com/d/msg/angular/yClOeqR5DGc/4YXGx9z8EpAJ
[2] https://groups.google.com/d/msg/angular/EGwg49uAmMI/j-kj9nytT-IJ
[3] https://groups.google.com/d/msg/angular/EGwg49uAmMI/j-kj9nytT-IJ
Ответ 3
Я наткнулся на эту услугу, которую можно было бы проверить. Он запускает сервер PhantomJS и выполняет всю работу для вас.
Ответ 4
Создание одностраничного приложения. Сканирование, но интерактивное, не является прямой задачей. Вы должны подумать о точках доступа с точки зрения UX, которая позволит использовать кнопку "Назад" и перейти к доступу. Когда нажата кнопка "Назад" , например, метки для состояний объектов должны быть воссозданы на сервере без взаимодействия с пользователем, генерируя ту же самую разметку, что и использование для доступа к этой точке доступа создавало бы на клиенте. Phantom.js можно использовать для этой задачи, или агностические js клиента/сервера могут использоваться для запуска на обоих концах или, например, в хорошие выходные дни, вся логика для репликации состояния точки доступа может быть повторно использована, написанный для сервера. @Ajay Beniwal подробно рассказал о том, как создавать html-снимки.
Предполагая, что у вас есть веб-сервер, который может выкидывать разметку начальной загрузки, учитывая конкретное состояние объекта. Состояние может быть предоставлено через идентификатор состояния, для этого требуется URL-адрес, чтобы ваш код мог выполнять сканирование. Библиотеки, такие как Angular js и механизмы подачи Backbone.js, такие как Backbone.Router, которые, в свою очередь, используют фрагменты ссылок или метод pushState() HTML5 для хранения идентификатора состояния на клиенте. Однако красота HTML5 заключается в том, что обновление делает прямой вызов правильного состояния объекта на сервер без необходимости загружать начальную страницу, которая анализирует хеш и передает его правильному URL-адресу состояния объекта, нет другого варианта для старого браузеры, архитектуру вашего приложения вокруг парадигмы HTML5 сделают их торт для искателей, а большинство реализаций HTML5 pushState, таких как Backbone.Router, изящно делятся на хэш-теги, которые используются для более старых браузеров, чтобы по-прежнему разрешить кнопку "Назад" .
Ответ 5
С октября 2015 года вам не нужно ничего делать, чтобы сделать приложение сканируемым (я полагаю, вы имеете в виду сканирование Google).
Проверьте эту статью:
https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html