Lugar idoneo para colocar los ficheros .js

Leunamal

Al realizar el diseño de una pagina con twig, me ha surgido una duda. ¿Cual debería ser el lugar idóneo para colocar los ficheros javascript? Había leido que lo ideal era ponerlo al final del documento, una vez que se había cargado ya toda la página.

Así lo estaba haciendo, pero al usar varios ficheros .twig, uno de ellos heredando de otro, llega un momento que si escribo código javascript intrusivo, por ejemplo, código de jquery. No se me ejecuta correctamente porque hasta ese punto, no se ha includo jquery y por eso me salta como error en Firebug.

Si me creo un fichero .js para el uso de ajax, posiblemente tenga algun problemilla porque se incluiría en todos los ficheros que hereden de esa plantilla y no interesa (pero bueno, esto es lo de menos y no viene mucho al caso).

¿Donde soleis colocarlos vosotros?

elkaoD

Arriba (por lo que tú mismo comentas.) Lo de ponerlos abajo era (si no me equivoco) para que la página fuera cargando y renderizando y luego pillara el JS pero en los tiempos que vivimos no tiene sentido.

Ahora que todo está paralelizado tiene poco sentido esperar al final.

Corríjanme si me equivoco, la web no es lo mío xD

GreyShock

#1 Lo recomendable es colocarlos siempre al final, antes de cerrar la etiqueta del body para que haya cargado correctamente todo el DOM, aunque eso se puede suplir con la función ready de jquery.

Si vas a incluir código intrusivo tampoco te importa tanto la optimización, así que carga el jquery en el header y santas pascuas xD

1 respuesta
eXtreM3

Lo de poner los js justo antes de la etiqueta </body> no era por motivos de indexación en buscadores y posicionamiento? Tengo entendido que cuando los spiders entran a cachearte el código fuente, si se topan con mucho código js al principio de la web (en el head) pueden cascar, o pueden darte una puntuación menor.

Hay veces que no queda más remedio que ponerlos en el head, pero siempre que se pueda mejor ponerlos al final de la página.

2 respuestas
elkaoD

#3 #4 tenéis razón y, pensándolo mejor, es lógico. El .js puede tener efectos colaterales (document.write p.ej.) por lo que no puede mostrar el DOM si no ha ejecutado el js. ¿Es así?

1 respuesta
Leunamal

Gracias por responderme. Al parecer, el fallo que tenia de javascript, se debía a que no tenia descargado el YUI Compressor (http://developer.yahoo.com/yui/compressor/) y por eso el contenido del fichero de jquery no estaba correctamente minimizado.

Algo parecido a esto me pasaba:

http://stackoverflow.com/questions/6554014/assetic-yui-compressor-in-symfony-2-is-this-a-bug

En cuanto a lo de poner los ficheros de javascript al final, lo he leído en varios sitios, pero no sabía a ciencia cierta cual era la razón. Lo que indica #4 perfectamente podría ser.

1 respuesta
GreyShock

#6 Es por optimización de código, no lo digo teorizando, lo he leído y estudiado xD Incluir el código javascript en el header puede provocar errores si la web es muy tocha al no cargarse del todo el DOM antes de prodecer a toquetearlo con javascript.

#5 El momento idóneo para que el javascript trabaje es entre la carga del DOM y la carga de contenido/imágenes. Ya que hemos cargado el "esqueleto" de la web, que es lo que vamos a trastear con js.

Lo del conflicto con los robots de indexación de contenido no lo había oído nunca, pero lo investigaré, que está bien saberlo.

Usuarios habituales

  • GreyShock
  • Leunamal
  • elkaoD
  • eXtreM3