Как сделать приложение Angularjs обманутым

Я создаю одностраничное приложение, используя Angular.js. Мой вопрос заключается в том, как сделать приложение сканируемым, потому что маршрутизация выполняется с использованием ng-view на стороне клиента, а сервер просто возвращает простой заголовочный файл.

Ссылка на сайт: http://india-elections.in/

Ответ 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, изящно делятся на хэш-теги, которые используются для более старых браузеров, чтобы по-прежнему разрешить кнопку "Назад" .