
Building Polyfills
Brandon Satrom
- Editorial
- O'Reilly
- Año
- 2014
- Páginas
- ~170
- Nivel
- Intermedio
De qué trata
Libro breve de O'Reilly en el que Brandon Satrom, entonces evangelista de Kendo UI en Telerik, enseña a diseñar y construir polyfills: librerías JavaScript que añaden a los navegadores las funciones de la plataforma web que les faltan. Se publicó en 2014, en plena adopción de HTML5, cuando todavía había que dar soporte a Internet Explorer antiguo. Está dirigido a desarrolladores de nivel intermedio con buen dominio de JavaScript, el DOM y las especificaciones web, interesados en escribir librerías para otros.
La primera parte presenta los tipos de polyfill (shims, opt-in, drop-in y forward) y unos principios para desarrollarlos de forma responsable: leer la especificación, respetar la API, cubrir solo lo que falta, pensar como un desarrollador de navegadores, cuidar el rendimiento y planificar la obsolescencia. A partir de ahí se construye paso a paso un polyfill de formularios HTML5, con tipos de input como color y number, detección de funcionalidades, opciones opt-in y estilos visuales con CSS. Se configura un flujo de trabajo profesional con npm y Grunt, pruebas unitarias con Jasmine, pruebas automáticas en varios navegadores con Karma e integración continua con Travis CI. También se mide y optimiza el rendimiento con JSPerf, se resuelven casos particulares de cada navegador y se tiene en cuenta el móvil.
La segunda parte trata los «prollyfills», que implementan APIs todavía en borrador para experimentar con ellas antes de que lleguen a los navegadores. Repasa HitchJS para CSS, ServiceWorker y Web Components (templates, Shadow DOM, custom elements con AngularJS y Polymer, HTML Imports). Termina construyendo, guiado por pruebas, un prollyfill de la especificación Resource Priorities para la carga diferida de recursos con el atributo lazyload. Lo más valioso del libro es su método, que sigue vigente: desarrollo guiado por pruebas, pruebas en varios navegadores y respeto por la especificación. En cambio, Grunt, Travis CI, HTML Imports y la propia Resource Priorities han quedado obsoletos o se abandonaron, así que las herramientas conviene adaptarlas a las de hoy.
- Polyfills
- Prollyfills
- Formularios HTML5
- Detección de funcionalidades
- Grunt
- Jasmine
- Karma
- Travis CI
- Rendimiento JavaScript
- Web Components
- ServiceWorker
- Pruebas en varios navegadores
¿Cómo enseña?
Con proyectos
- ✗ Sin ejercicios
- ✓ Incluye proyectos
Proyectos
Polyfill de formularios HTML5
Librería opt-in que añade soporte para tipos de input HTML5 (color, number y otros) en navegadores que no los tienen. Se desarrolla con npm, Grunt, Jasmine y Karma, con pruebas en varios navegadores en Travis CI y optimizaciones de rendimiento medidas con JSPerf.
Prollyfill de Resource Priorities
Implementación experimental de la especificación Resource Priorities que añade carga diferida de recursos mediante el atributo lazyload y el evento lazyloaded. Se construye prueba a prueba con desarrollo guiado por pruebas.

