2012-01-19 8 views
6

Mam projekt, który jest silnie oparty na JavaScript (np. Node.js, backbone.js, itp.). Używam adresów URL hashbang takich jak/#!/About i przeczytałem specyfikację indeksowania google ajax crawlable. Zrobiłem trochę bezgłowego testowania interfejsu użytkownika z zombie i mogę łatwo wyobrazić sobie, jak można to zrobić, ustawiając niewielkie opóźnienie i zwracając statyczną treść z powrotem do bota google. Ale tak naprawdę nie chcę tego wdrażać od zera i miałem nadzieję, że istnieje wcześniejsza biblioteka, która pasuje do mojego stosu. Znasz jednego?Czysto JavaScript Solution dla Google Ajax Crawlable Spec

EDYCJA: W momencie pisania artykułu nie sądzę, że to istnieje. Jednak renderowanie za pomocą szkieletu (lub podobnego) na serwerze i kliencie jest prawdopodobnym podejściem (nawet jeśli nie jest bezpośrednią odpowiedzią). Zaznaczę to jako odpowiedź, chociaż mogą pojawić się lepsze rozwiązania w przyszłości.

Odpowiedz

2

Jest jedna realizacja przy użyciu node.js i backbone.js na serwerze i przeglądarce https://github.com/Morriz/backbone-everywhere

+0

Chociaż nie jestem pewien, czy będę używał tego, to jest najbliższy wiarygodnej odpowiedzi podanej tam prawdopodobnie nie jest bezgłowego rozwiązania js w tym czasie;) – Rob

+0

Proszę również wziąć pod uwagę to podejście http://stackoverflow.com/ pytania/9413328/loading-a-backbone-js-collection-on-html-page-load/9413380 – opengrid

10

Wystarczy, aby dostroić się, wpadłem na ten problem też (mam bardzo ciężką stronę ajax/js) i znalazłem to, co może być interesujące:

crawlme

Muszę jeszcze spróbować, ale brzmi to tak, że cały proces będzie bułką, jeśli działa tak, jak jest reklamowany! Jest to element oprogramowania pośredniczącego typu connect/express, który jest wstawiany przed wszelkimi wywołaniami do stron i najwyraźniej zajmuje się resztą.

Edit:

Próbowałem crawlme, miałem pewne sukcesy, ale przeglądarka backend bezgłowy używa (zombie.js) została braku niektóre z moich treści JavaScript, prawdopodobnie dlatego, że działa przez emulting DOM i dlatego nie będzie doskonały.

Sooo, zamiast ja zdobędzie pełną WebKit oparte bezgłowe przeglądarki, phantomjs oraz zestaw linkings węzeł dla niego coś takiego:

npm install phantomjs node-phantom 

Następnie tworzone mój własny skrypt podobny do crawlme, ale używanie phantomjs zamiast zombie.js. To podejście wydaje się działać doskonale i doskonale renderuje każdą z moich stron opartych na ajaxu. skrypt, który napisałem, aby to wyciągnąć, można znaleźć pod adresem here. go używać, po prostu:

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

a następnie przed wszelkie inne połączenia do swojej aplikacji (to jest przy użyciu express ale powinien działać ze wystarczy podłączyć też:

app.use(googlebot()); 

źródłem jest realtively prosty minus kilka z wyrażeń regularnych, więc proszę o wyskrobanie :)

Wynik: Witryna internetowa AJAX dla ciężkiego node.js/connect/express może być indeksowana przez googlebota.

+0

Miałem ten sam problem z crawlme i zombie. Dzięki! +1 – Dru

Powiązane problemy