A día de hoy, en general, el desarrollo de una página web es mucho más sencillo debido a que todos los navegadores importantes interpretan el código de un modo prácticamente similar gracias al compromiso de los desarrolladores con adoptar los estándares. Sin embargo durante bastantes años esto no fue para nada así, sino que era habitual hacer un desarrollo que funcionaba perfectamente en un navegador pero que en el resto tenía uno u otro problema.
Para solventar estos problemas de renderizado, algunas veces directamente se creaba una versión alternativa de la web y otras veces se hacía uso de polyfills. Este último es un término que en aquél momento jamás escuché o utilicé, pero que hace poco descubrí que existía y por eso he pensado que podía ser buena idea redactar esta entrada para comentar qué es un polyfill.
Un polyfill se trata de un fragmento de código que se usa para permitir una funcionalidad moderna en un navegador antiguo o que simplemente no implementa de manera nativa la funcionalidad que buscamos. Normalmente son implementaciones que se realizan con JavaScript y viene a suplir algo que actualmente es un estándar en una plataforma pero anteriormente no lo era, lo que provoca que la aplicación web no funcione como es de esperar.
Origen
El término fue acuñado por Remy Sharp mientras escribía su libro «Introducing HTML5» allá por 2009 cuando buscaba una palabra que describiera «replicar una API usando JavaScript (o Flash o lo que sea) si el navegador no lo tiene de forma nativa». Al parecer la palabra deriva de «Polyfilla», una marca que fabrica productos para sellar grietas.
Desde luego, como en el caso del spam uno jamás habría anticipado su origen, pero una vez sabido reconozco que es bastante descriptivo, ya que a fin de cuentas un polyfill ayuda a parchear una web. Precisamente parche es el término que nosotros usábamos para describir estos fragmentos de código.
Integración
Existen diferentes modos de realizar la integración de un polyfill dentro de una web ya que dependerá del tipo que sea. Pero lo normal será cargarlo en algún punto de la web, dentro de algún condicional que nos permita discriminar el dispositivo desde el cual se está ejecutando la web. De modo que si la condición se da añadiremos el código adicional y si no, pues el proceso de carga seguirá con normalidad.
Por ejemplo, en su momento hablé de html5shiv, un polyfill que servía para que Internet Explorer reconociera las por aquél entonces nuevas etiquetas de HTML5 y que era prácticamente imprescindible en cualquier desarrollo web. El método de integración era cargarlo en la cabecera dentro de un condicional que reconocía la versión del navegador.
Referencias:
- Polyfill – Recursos para desarrolladores de Mozilla
- ¿Qué es un Polyfill? (inglés) – Blog de Remy Sharp
Deja una respuesta