Чисто JavaScript-решение для Google Ajax Crawlable Spec - PullRequest
6 голосов
/ 19 января 2012

У меня есть проект, основанный на JavaScript (например, node.js, backbone.js и т. Д.). Я использую URL-адреса hashbang, как / #! / About, и прочитал спецификацию google ajax crawlable. Я провел небольшое безголовое тестирование пользовательского интерфейса с помощью зомби и легко могу понять, как это можно сделать, установив небольшую задержку и вернув статический контент обратно в бот Google. Но я на самом деле не хочу реализовывать это с нуля, и надеялся, что уже существовала библиотека, подходящая для моего стека. Знаешь одного?

РЕДАКТИРОВАТЬ: На момент написания я не думаю, что это существует. Тем не менее, рендеринг с использованием магистрали (или аналогичного) на сервере и клиенте является приемлемым подходом (даже если это не прямой ответ). Так что я собираюсь отметить это как ответ, хотя в будущем могут быть и лучшие решения.

Ответы [ 4 ]

10 голосов
/ 07 марта 2013

Просто чтобы вмешаться, я тоже столкнулся с этой проблемой (у меня очень тяжелый сайт ajax / js), и я нашел это, которое может представлять интерес:

crawlme

Я еще не попробовал, но звучит так, будто весь процесс превратится в кусок пирога, если он будет работать так, как рекламируется! это часть связующего / экспресс-промежуточного программного обеспечения, которое просто вставляется перед любыми вызовами на страницы и, по-видимому, заботится об остальном.

Edit:

Попробовав crawlme, я добился некоторого успеха, но используемый для него безголовый браузер (zombie.js) не работал с некоторым содержимым моего javascript, вероятно потому, что он работает путем эмуляции DOM и, следовательно, не будет идеальным.

Ооо, вместо этого я получил полный браузер без заголовка, phantomjs и набор ссылок на него для него, например:

npm install phantomjs node-phantom

Затем я создал свой собственный скрипт, похожий на crawlme, но использующий phantomjs вместо zombie.js. Этот подход, кажется, отлично работает и прекрасно отрисовывает каждую из моих страниц на основе ajax. сценарий, который я написал для этого, можно найти здесь . чтобы использовать это, просто:

var googlebot = require("./path-to-file");

и затем перед любыми другими вызовами вашего приложения (это использует экспресс, но должно работать только с подключением:

app.use(googlebot());

источник очень прост, за исключением пары регулярных выражений, так что давайте посмотрим:)

Результат: веб-сайт AJAX heavy node.js / connect / express может сканироваться googlebot.

2 голосов
/ 02 марта 2012

Существует одна реализация, использующая node.js и Backbone.js на сервере и в браузере https://github.com/Morriz/backbone-everywhere

1 голос
/ 06 ноября 2013
Модуль

crawleable nodejs, кажется, подходит для этой цели: https://npmjs.org/package/crawlable и пример такого SPA, который может быть отображен на стороне сервера в узле https://github.com/trupin/crawlable-todos

0 голосов
/ 31 января 2012
...