Ubicación del JavaScript: Head vs. Footer – Ventajas y desventajas

¿JavaScript en el footer o en el header? ¿Qué importancia tiene para los Core Web Vitals y cuál deberías usar?

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

Ubicación del JavaScript: Head vs. Footer – Ventajas y desventajas

Al desarrollar páginas web, la ubicación del código JavaScript puede impactar significativamente en el rendimiento de la página, la velocidad de carga y la experiencia del usuario. Tradicionalmente, se ha recomendado colocar el JavaScript en el <head> de la página. Esta es una apuesta segura, pero ¿es la decisión correcta? En este artículo, exploraremos las diferencias entre JavaScript en el head y en el footer de la página, examinando las ventajas y desventajas de cada enfoque y los contextos en los que son más adecuados.

Contexto: el preload scanner

El preload scanner es un segundo parser de HTML que escanea rápidamente todo el HTML de la página y obtiene recursos críticos como imágenes, archivos CSS, archivos JavaScript y otros activos necesarios para que la página se renderice correctamente. El preload scanner generalmente obtiene los recursos en el orden en que los detecta en la página. Ahí es donde entra en juego la ubicación del JavaScript: cuando el JavaScript se coloca en el footer, se detecta más tarde y se activa su descarga después de los recursos que están por encima.

JavaScript en el Head: 

Colocar el código JavaScript en la sección <head> del documento HTML tiene algunas ventajas, especialmente en lo que respecta a la organización del código y la separación del marcado HTML. Estas son las ventajas y desventajas de usar JavaScript en el head:

Ventajas:

  1. Separación del código: Mantener el código JavaScript en el <head> permite una clara separación entre la lógica del script y el contenido HTML, haciendo que el código sea más mantenible y legible.
  2. Descarga anticipada: El JavaScript en el head se pone en cola para descarga antes que cualquiera de los recursos en el body de la página (como imágenes, videos e iframes)
  3. Ejecución más temprana: Los scripts que se ponen en cola para descarga generalmente se ejecutan antes que los scripts en el footer. El tiempo exacto de ejecución depende de muchos factores. Si te interesa, te sugiero leer Defer vs Async JavaScript y cómo afecta a los Core Web Vitals

Desventajas:

  1. Bloqueo del renderizado: Cuando el JavaScript se coloca en el <head> (sin el atributo defer), puede bloquear el renderizado de los elementos HTML, provocando un retraso en la visualización de la página hasta que se complete la ejecución del script.
  2. Carga de página más lenta: Debido a la descarga anticipada, compite con otros recursos importantes como el elemento de Largest Contentful Paint.

¿Cuándo deberías colocar el JavaScript en el head?

Scripts importantes: Los scripts que son críticos para el renderizado o para la experiencia de la página deben colocarse en el head de la página. Por ejemplo, los scripts que manejan tu menú, tu slider principal o tu aviso de cookies deben colocarse en el head de la página.

Scripts de detección de características: En ciertos escenarios, bibliotecas de JavaScript como Modernizr, que se utilizan para la detección de características, pueden ser necesarias en el <head> para detectar las capacidades del navegador tempranamente en el ciclo de vida de la página.

JavaScript en el Footer: 

Colocar el código JavaScript en la parte inferior de la página, justo antes de la etiqueta de cierre </body>, se ha convertido en una práctica ampliamente utilizada. Esto pondrá el script en cola para descarga después de los otros elementos en el body, como imágenes y videos. Esto mejorará la velocidad de pintado sobre la funcionalidad. Estas son las ventajas y desventajas de usar JavaScript en el footer:

Ventajas:

  1. Carga de página más rápida: Al colocar el JavaScript al final de la página, el contenido HTML se carga primero y el JavaScript se ejecuta después, lo que resulta en una carga inicial de página más rápida.
  2. Evitar puntos únicos de fallo (SPOFs): Al cargar el JavaScript de último, se reducen las posibilidades de encontrar SPOFs, asegurando que el resto del contenido de la página sea visible incluso si el JavaScript falla al cargarse o ejecutarse.

Desventajas:

  1. Ejecución tardía: El JavaScript en el footer puede llevar a una ejecución retrasada de ciertos scripts, afectando funcionalidades que dependen del acceso temprano a JavaScript.

¿Cuándo deberías colocar el JavaScript en el footer?

Código menos crítico: Para scripts que no afectan el renderizado de la página o funcionalidades que no son necesarias inmediatamente al cargar la página, colocarlos en el footer puede llevar a un mejor rendimiento general.

Mejores prácticas y recomendaciones: 

Considerando los diferentes aspectos de colocar JavaScript en el head y el footer, estas son algunas mejores prácticas y recomendaciones:

  1. Scripts críticos para el renderizado: Los scripts que impactan el contenido principal de la página deben cargarse de forma bloqueante en el head de la página. Intenta evitar este tipo de scripts ya que pueden tener un gran impacto en los Core Web Vitals y el pagespeed.

  2. Scripts críticos: Los scripts que son importantes para la conversión o la interacción de la página deben colocarse con async o defer en el head de la página

  3. Scripts normales: A menos que impacten el diseño o requieran acceso temprano, coloca los scripts regulares en el footer para mejorar la velocidad de carga de la página.

  4. Scripts opcionales: Los scripts de los que podrías prescindir si fuera absolutamente necesario deberían inyectarse una vez que el navegador esté inactivo.

  5. Escucha eventos. El evento DOMContentLoaded o el evento load pueden asegurar que el JavaScript se ejecute en o después de estos eventos de temporización, independientemente de su ubicación.

La decisión de colocar JavaScript en el head o el footer de una página web debe basarse en los requisitos específicos del sitio web y las funcionalidades de los scripts involucrados. Colocar JavaScript en el head ofrece beneficios de separación de código y acceso temprano, pero puede provocar bloqueo del renderizado y una carga de página más lenta. Por el contrario, JavaScript en el footer proporciona tiempos de carga de página más rápidos y minimiza los riesgos de SPOF, pero puede resultar en una ejecución retrasada para ciertas funcionalidades. Como desarrolladores web, es esencial comprender las compensaciones y tomar decisiones informadas para optimizar la experiencia del usuario y el rendimiento general del sitio web.

Ejemplo 1: JavaScript en el Head



    Ejemplo de JavaScript en el Head
        <script src="script.js">


    Haz clic


En este ejemplo, la función JavaScript showMessage() se coloca en la sección <head> del documento HTML. La función se ejecuta cuando se hace clic en el botón, mostrando una alerta. Sin embargo, el body no se parseará antes de que el archivo 'script.js' haya sido cargado y ejecutado.

Ejemplo 2: JavaScript en el Footer

En este ejemplo, la misma función JavaScript showMessage() se coloca en la parte inferior de la sección <body>, justo antes de la etiqueta de cierre </body>. Colocar JavaScript en el footer permite que el contenido HTML se cargue primero, y el código JavaScript se ejecutará cuando se haga clic en el botón. Como resultado, la alerta aparece sin ningún retraso notable, proporcionando una experiencia de usuario más fluida y este script no se ve afectado por el archivo 'script.js' ya que se descargará en segundo plano.

Ejemplo 3: Uso de event listeners



    Ejemplo de event listener
    


    


En este ejemplo, se utiliza un event listener de load con una función callback para asegurar que el código JavaScript dentro de la función se ejecute solo después de que la página se haya cargado completamente, independientemente de si se coloca en el head o en el footer. Este enfoque asegura que el código no se ejecute hasta que todos los elementos de la página estén listos, proporcionando un comportamiento confiable y consistente.

Estos ejemplos demuestran la diferencia en el comportamiento entre JavaScript colocado en el head y en el footer. Colocar JavaScript en el footer puede llevar a una carga de página más rápida y una experiencia de usuario más fluida, especialmente cuando se trabaja con scripts grandes o funcionalidades que no requieren ejecución inmediata. Sin embargo, ciertos escenarios, como la detección de características o el uso de bibliotecas específicas, pueden requerir que JavaScript se coloque en el head. Siempre considera los requisitos específicos de tu página web y elige la ubicación adecuada de JavaScript en consecuencia.

The RUM tool I built for my own clients.

CoreDash is what I use to audit enterprise platforms. Under 1KB tracking script, EU hosted, no consent banner. AI with MCP support built in. The same tool, available to everyone.

Create Free Account
Ubicación del JavaScript: Head vs. Footer – Ventajas y desventajasCore Web Vitals Ubicación del JavaScript: Head vs. Footer – Ventajas y desventajas