bootstrap javascript jquery modernizr

javascript - bootstrap



¿Es realmente necesario Modernizr si no está utilizando la detección de características? (2)

Sigo saltando en proyectos donde Modernizr está ubicado en la cabeza, pero no se está utilizando (al menos para la detección de características). Ahora, me encanta Modernizr, lo uso con frecuencia para la detección de características y para los proyectos que lo requieren; sin embargo, los últimos tres proyectos en los que he entrado están sentados en la cabeza sin que se haya llamado a ninguna de las clases de detección de características. Estos proyectos utilizan javascript de vainilla y / o no requieren en absoluto rellenos de jQuery. 1 Dicho esto ... si no está utilizando la detección de características y realmente no necesita cargar una biblioteca jQuery 2 , ¿Modernizr está haciendo algo además de realizar una solicitud HTTP adicional y un recurso para cargar?

No soy lo suficientemente fuerte con jQuery / javascript para entender si está afectando algo más bajo el capó.

Editar

1 y 2 : Modernizr es javascript y no requiere la biblioteca jQuery (lo que me hace preguntarme por qué la biblioteca jQuery también se está cargando, al menos en estos casos).

Modernizr.min con solo #-shiv-cssclasses-load es 7.57 KB, mientras que html5shiv.min solo tiene 3 KB.


En términos generales, Modernizr hace tres cosas.

  1. Agrega clases que indican el soporte de funciones, lo que le permite aplicar diferentes estilos a los elementos en función de las funciones que admitan.
  2. Le permite ejecutar la detección de características para decidir si ejecutar un script / ejecutar un polyfill o no.
  3. Inyecta html5shiv, que permite que los navegadores antiguos comprendan los elementos HTML5.

Si no usa ninguna de estas funciones, entonces no tiene sentido incluir Modernizr. Si solo lo usa para html5shiv entonces probablemente podría incluirlo en su lugar para guardar algunos bytes, aunque dudo que exista una diferencia de tamaño relevante.

Dicho esto, nunca debe incluir la detección de características en una compilación de modernización que no use. Eso no es más que un desperdicio.


Modernizr también incluye cuñas que le evitan definirlas usted mismo o incluir otra biblioteca.

El objetivo principal de Modernizr es utilizar la detección a través de clases. para que puedas hacer algo como esto:

Ejemplo, donde desea cambiar el comportamiento dependiendo de si el cliente soporta flash:

.flash #flashdiv { display:block; } .no-flash #flashdiv { display:none; }

Realmente te ayuda a lidiar dinámicamente con las capacidades de los diferentes navegadores de clientes.

Además, puede usar Modernizr para detectar funciones HTML5 y proporcionar recursos alternativos (polyfills).

P.ej:

<script> if (Modernizr.canvas) { alert("This browser supports HTML5 canvas!"); //you can load js here. or use yepnope) } </script>