2012-01-19 6 views
6

Tengo un proyecto basado en gran medida en JavaScript (por ejemplo, node.js, backbone.js, etc.). Estoy usando URL hashbang como/#!/About y he leído las especificaciones rastreables de google ajax. He hecho un poco de pruebas de IU sin cabeza con zombie y puedo concebir fácilmente cómo se podría hacer esto estableciendo un ligero retraso y devolviendo el contenido estático al bot de google. Pero realmente no quiero implementar esto desde cero y esperaba que hubiera una biblioteca preexistente que se ajustara a mi stack. ¿Sabes de uno?Solución Purely JavaScript para Google Ajax Spec Crawlable

EDITAR: Al momento de escribir esto, no creo que esto exista. Sin embargo, la renderización usando backbone (o similar) en el servidor y el cliente es un enfoque plausible (incluso si no es una respuesta directa). Así que voy a marcar eso como respuesta, aunque puede haber mejores soluciones en el futuro.

Respuesta

2

Hay una aplicación usando Node.js y Backbone.js en el servidor y el navegador https://github.com/Morriz/backbone-everywhere

+0

Aunque no estoy seguro de que use esto, es lo más cercano a una respuesta plausible dado que probablemente no haya una solución sin cabeza en js en este momento;) – Rob

+0

Considere también este enfoque http://stackoverflow.com/ preguntas/9413328/loading-a-backbone-js-collection-on-html-page-load/9413380 – opengrid

10

Sólo para interrumpiría, me encontré con este problema también (tengo un sitio muy ajax/js), y encontré esto que puede ser de interés:

crawlme

Todavía tengo que probarlo, pero parece que hará que todo el proceso sea pan comido si funciona como se anuncia. es una pieza de middleware connect/express que simplemente se inserta antes de cualquier llamada a las páginas, y aparentemente se ocupa del resto.

Editar:

Después de haber probado crawlme, he tenido cierto éxito, pero el navegador backend sin cabeza que usa (zombie.js) estaba fallando con un poco de mi contenido JavaScript, probablemente porque funciona por emulting el DOM y por lo tanto no será perfecto.

Sooo, en cambio me dieron bodega de un webkit completa basada en navegador sin cabeza, PhantomJS, y un conjunto de vinculaciones de nodos para los que, como este:

npm install phantomjs node-phantom 

Entonces creé mi propio guión similar a crawlme, pero usando phantomjs en lugar de zombie.js Este enfoque parece funcionar perfectamente, y hará que cada una de mis páginas basadas en Ajax perfectamente. la secuencia de comandos que escribí para sacar esto se puede encontrar here. para usarlo, simplemente:

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

y luego antes de cualquier otra llamada a su aplicación (esto es usar expreso, pero debería funcionar con sólo conectar también:

app.use(googlebot()); 

la fuente es realtively sencilla menos un par de expresiones regulares, así que haga un gancho :)

Resultado: El googlebot puede rastrear el sitio web AJAX pesado node.js/connect/express.

+0

Tuve el mismo problema con crawlme & zombie. ¡Gracias! +1 – Dru

Cuestiones relacionadas