AngularJS SEO

smintcs

Quiero hacer un tema con AngularJS para wordpress pero veo un problema con el SEO. El tema de wordpress es muy secundario que ya se que aquí hay quien le tiene ojeriza a los cms. La situación sería la misma con otro cms o framework o lo que sea.

Voy a explicar como entiendo que va esto. Cuando yo en angular hago {{nombre}} la página se renderiza y tal y carga "Paco". Cuando google hace esto no se renderiza y carga {{nombre}}.

Por lo que estoy viendo la solución que hay por ahora es esto:

1 - Hacer la app SPA

2 - pre renderizar cada página (a mano o con servicios online)

3 - hacer que la app distinga entre users y crawlers y mandar a los crawlers a páginas específicas

4 - crear y dar un sitemap

El tema es que estoy viendo que hay unos cuantos servicios de pago que hacen esto, algunos de hecho en su publicidad hablan de lo bien que funcionan y lo mal que funcionan las soluciones más asequibles.

Tambien veo que muchas de las soluciones que no son de pago pasan por instalar cosas en el servidor que hacen ese pre renderizado, lo que le quita mucha portabilidad.

La verdad es que en lo que escribía esto ya me fui dando cuenta de como hacerlo y puede que no sea tanto lío, pero bueno siempre se agradece cualquier consejo.

RaymaN

En los últimos meses solo hago leer opiniones negativas sobre angularjs (lentitud y pesadez de las webs, nueva versión no compatible con la anterior...) y cada vez estoy más convencido de que va a ser "deprecated" en un par de años. A día de hoy no recomiendo su aprendizaje.

Dicho esto, aquí tienes un buen post de SO que te puede servir de ayuda. Mi opinión es que no hagas la web con angularjs si el seo es muy importante para ti.

http://stackoverflow.com/questions/13499040/how-do-search-engines-deal-with-angularjs-applications

2 respuestas
smintcs

He estado mirando más y es una pena, hay que meter en el server algo para hacer las capturas o usar un servicio online, hay algunos gratis pero no dejas de estar dependiendo del servicio.

Voy a hacer solo este tema que es para un portfolio y queda muy vistoso pero vamos, angularjs esta bien pero hay cosas para las que es un truñaco.

DarkSoldier

#2 http://tutorialzine.com/2014/12/the-languages-and-frameworks-that-you-should-learn-in-2015/

coño xd angularjs esta el primero jaja

ontopic: la verdad es que me replantearía usar angularJS si para ti el SEO es muy importante

Foxandxss

#2 La gente no para de decir tonterías (y siento decir que la tuya es tontería también).

¿Que es lento? Depende del programador, siempre siempre hay alguna forma de solventar un problema concreto de lentitud, siempre.

He visto gente quejándose porque algo le renderiza lento y luego ves el código y no se da cuenta que en cada digest (cuando se actualizan los bindings) está calculando el cielo y la madre, hace 20 for's ahi muy muy horrendos y terminan diciendo.. angular es lento (eso no lo digo por ti).

Si sabes programar, sabes escribir código decente, Angular no te va a dar problemas. En otros casos, siempre puedes tirar algún memoize para ahorrarte alguna función pesada o un poco de throttling / debounce en algunas funciones que se ejecutan muchas veces.

Sobre pesadez en la web... concretamente es justo lo contrario, aunque ahí tendrías que explicarte mejor.

Sobre la nueva versión... ni caso, si bien es cierto que cambiará radicalmente, quitará varios puntos muy negros de angular (y entre la posibilidad de que el mal código no haga la app lenta), a la gente le encanta llorar... desde el anuncio de Angular 2, lo único que ves son gente blogueando gilipollencias, otros blogueando el por qué esas gilipolladas no valen un duro y sobretodo gente llorando por reddit e IRC. Gracias a dios, eso ha parado ya.

Somos programadores, hacemos soluciones, si nos traen una nueva versión donde poder usar ES6, no tener que pelearnos más con $scope y su maldita herencia y con suerte quitarnos el dirty-checking de encima, ¿por qué nos quejamos? ¿Nos da miedo aprender?

Eso de que va a ser deprecated te lo has sacado de la manga pero bien. Angular sigue siendo el framework más usado ahora mismo. ¿Que si bien algún día sale algo mejor? Pues no habría problema en cambiar, que tampoco somos fanboy de nadie.

Angular es una herramienta, no solventa todos los problemas, pero si ves que te solventa uno concreto, úsalo y ya está.

Sobre #1 y su SEO, no te puedo ayudar en exceso pues no he tenido necesidades de SEO, pero técnicamente tienes que separar las peticiones de usuarios y de crawlers (técnicamente estoy es muy sencillo), y finalmente mandarles a Angular o a una página pre-renderizada para ellos.

A ver si los crawlers se ponen las pilas ya, técnicamente pueden ejecutar javascript a día de hoy.

2 1 respuesta
RaymaN

#5 las críticas a angularjs no vienen solo de un blog cualquiera, sino también de empresas y servicios más o menos importantes que están descontentos con el framework o directamente han dejado de usarlo. ¿Que tiene cosas buenas? Por supuesto, pero lo han pintado de maravilla desde que salió y está muy lejos de ser el framework por excelencia de js.

2 respuestas
DarkSoldier

#6 estaría bien poner ejemplos de empresas para saber el motivo por el que dicen eso (para que uno no se vea con esos problemas en un futuro xD)

Foxandxss

#6 también he visto yo las quejas creeme, soy moderador del canal oficial de Angular y me las como a diario, el problema es que la mitad de ellas son infundadas, son solo /cry de los de toda la vida.

También conozco gente muy muy potente que me han contado el por qué lo han dejado y han tenido sus muy buenas razones.

Nada es perfecto, pero angular no es ni la mitad de la mitad de malo que esas empresas dicen.

eXtreM3

Yo estoy con Rayman.

2 respuestas
Foxandxss

#9 pero tu usas frameworks? No lo sabía.

2
DarkSoldier

#9 tu eres mas de crearte tu propio framework js no?

pd: yo estoy con Foxandxss.

2
E

de aqui a dos años puede pasar de todo

pd: yo estoy con darksoldier

1
A

Mmmm... considero por un amigo que angular es la leche le permite cargar toda la información desde los primeros 5 seg que tarda en cargar la página, una vez cargado, no vuelve a llamar al servidor. Toda la información la tiene el cliente desde el segundo 5. Hablo de 100000 registros creados inventados que se cargan de golpe.

3 respuestas
RaymaN

#13 al tercer segundo esperando ya he abandonado la página.

1 respuesta
DarkSoldier

#14 coño, en 5 segundos tienes toda su base de datos en local joder xd

A

#13 Yo no lo veo tan mal... de hecho lo veo muy bien hecho, te sale una pantallita cargando... y ya no vuelve a pedir al servidor nada de nada, es automático todo, a la hora de buscar, haces un click y carga automáticamente como si fueran combobox que salen con las ciudades de españa por ejemplo. Solo que no son ciudades son 100000 registros aunque luego muestres 20-40-60... es decir es algo que carga todo al instante. Entiendo que hay que saber bien del tema, no es algo que cualquiera pueda llegar y hacerlo al instante.

eXtreM3

La pregunta es si necesitas descargar TODO aunque no vayas a utilizarlo, para qué? Además la velocidad de extracción dependerá del servidor y de otros factores, no del framework js que utilices para mover dichos datos en las vistas.

12 días después
Makalister

nose xq inventais.. no se tiene xq descargar las secciones enteras de hecho solo descarga lo q va a ver o asi deberia ser.
Si no sabes angularjs backbone o algun otro y haces paginas web deberias por profesionalidad por lo menos probarlo y dejarte de polladas.

Kiroushi

#13 Yo eso lo veo un error de diseño grandísimo. Ya no por la velocidad de carga, si no por el consumo que le enchufas al cliente teniendo que meter en memorias churrazos en JSON de megas y megas.

La potencia de AngularJS viene (y el que no lo quiera ver es que está ciego) básicamente del juego que da ngResource.

Es una maravilla la gestión de modelos usando esa extensión.

1 1 respuesta
Makalister

#19 interesante no sabia lo de resource yo utilizaba el http directamente thx!

1 respuesta
Kiroushi

#20 Pues prepárate porque vas a descubrir un mundazo.

Mírate también los httpInterceptors.

19 días después
Foxandxss

Uh #13, ngResource es una basofia como la copa de un pino. Yo solo veo gente pegarse y pegarse con el (hago soporte de angular) y todos se pelean, se preguntan el por qué de $promise ahi dentro y los que sabemos angular, ninguno lo usamos.

Yo personalmente prefiero $http directamente.

1

Usuarios habituales