Polymer y los componentes web son temas muy populares últimamente y, como este ecosistema evoluciona rápidamente, a menudo puede ser difícil para los desarrolladores mantenerse al tanto de los últimos cambios.
En su charla en la Chrome Dev Summit, Matt McNulty, gerente de ingeniería del equipo de Polymer, explicó qué es Polymer y también describió la hoja de ruta hacia Polymer 1.0.
¿Qué es Polymer?
Primero, ¿qué es Polymer exactamente?
Polymer es una biblioteca que te ayuda a compilar elementos y apps a partir de componentes web. Los componentes web son un conjunto de vanguardia de nuevos estándares que permiten a los desarrolladores ampliar el vocabulario HTML con sus propios elementos personalizados.
Debido a que los componentes web están diseñados para ser una nueva primitiva del navegador, significa que son muy potentes, pero también de muy bajo nivel, y trabajar con ellos requiere un poco de código.
Polymer facilita el trabajo de los componentes web al "sugar" la sintaxis. Reduce la cantidad de código estándar que debes escribir y agrega un estilo declarativo, por lo que crear componentes web es tan fácil como escribir HTML.
El experimento Polymer
Polymer comenzó como un experimento para ver si podíamos aplicar polyfill en los estándares de componentes web y obtener comentarios de los desarrolladores antes de que se enviaran estas tecnologías a todos los navegadores. A medida que más desarrolladores comenzaron a utilizar Polymer, pasó de ser simplemente polyfills a ser una biblioteca real llena de funciones de productividad (vinculación de datos, supervisores de cambio de atributos, búsqueda automática de nodos, etc.). Sin embargo, todos los experimentos tienen resultados. Entonces, ¿cómo nos fue?
Si bien muchos desarrolladores indicaron que les gustaron la expresividad y productividad que se obtiene al trabajar con componentes web en Polymer, también expresaron preocupación por el rendimiento y la complejidad general.
Destaca una tensión natural que Polymer siempre tuvo: ser un experimento para impulsar la plataforma web, pero también crear algo digno de producción en el que los desarrolladores puedan confiar.
Próximos cambios
El equipo de Polymer analizó detenidamente cada función de la biblioteca con el objetivo de crear una versión más eficiente y lista para la producción que los desarrolladores puedan usar con confianza.
Capas
Polymer se refactorizó en una serie de capas. Las funciones principales son rápidas y eficientes, mientras que las más avanzadas serán opcionales. Para la mayoría de los casos de uso, las funciones principales deben cubrir las necesidades de los desarrolladores.
Vinculación de datos simplificada
El sistema de vinculación de datos de Polymer también se optimizó de forma significativa para el rendimiento. Siguiendo el enfoque en capas, la vinculación bidireccional ahora es opcional, y la opción predeterminada son las vinculaciones unidireccionales. Además, los tipos de propiedades publicados se hicieron explícitos y un cambio de propiedad ahora activa un evento para ayudar a que los elementos de diferentes bibliotecas se comuniquen con mayor facilidad.
Shadow DOM más simple
El polyfill de Shadow DOM es un gran logro de la ingeniería. Se diseñó para ser integral y cumplir con las especificaciones, lo cual es importante para probar exhaustivamente el componente básico de la plataforma, pero, lamentablemente, introduce una serie de cuellos de botella en el rendimiento para funciones que Polymer no usa.
La próxima versión de Polymer tendrá un enfoque diferente, ya que emplea una capa tipo shim que solo rellena lo que Polymer necesita.
El polyfill existente seguirá existiendo para los componentes web genéricos que no son de Polymer.
Traslado a webcomponents.org
Hablando de polyfills, estos también tendrán un nuevo hogar. En la actualidad, muchos desarrolladores están confundidos acerca de la relación entre Polymer y componentes web. Algunos creen que se necesita usar todo Polymer para utilizar componentes web cuando, de hecho, solo se necesitan los polyfills.
Para que esta distinción sea más clara, los polyfills se trasladarán a webcomponents.org y su nombre cambió a webcomponents.js
.
Este cambio está diseñado para ayudar a otros autores de la biblioteca a aprovechar los polyfills sin confusiones. El equipo de Polymer continuará contribuyendo a los polyfills, pero se espera que este cambio los convierta en un recurso compartido para la comunidad.
Resultados
¿Cuáles son los resultados de todos estos cambios?
Velocidad
En Chrome, Polymer ahora es 5 veces más rápida, y en Safari, la aceleración es 8 veces más rápida.
Tamaño del archivo
El tamaño del archivo también se redujo en un 87%, de 123 KB a 15 KB (6 KB comprimidos).
Hoja de ruta
Habrá algunos cambios rotundos en la próxima versión, que se indica con el nuevo número de versión (0.8), pero el equipo quiere dejar en claro que esto no es una reescritura. Mover tu proyecto actual de Polymer 0.5 a 0.8 debería ser bastante simple.
El equipo de Polymer también definió una hoja de ruta para brindarles a los desarrolladores más claridad sobre los próximos lanzamientos.
La versión preliminar 0.8 ya está disponible como una rama en GitHub (aunque todavía se está desarrollando de manera activa y carece de documentación). La versión beta oficial 0.9 está prevista para el primer trimestre de 2015, y la versión 1.0 tendrá lugar durante el segundo trimestre.
Finalizó el experimento
Con todos los cambios recientes en Polymer, el equipo que está a cargo está sentando las bases para que los componentes web se conviertan en una parte integral de la pila de cada desarrollador. Si eres nuevo en los componentes web, ahora es un buen momento para echar un vistazo y familiarizarte con estas tecnologías transformadoras. Si ya se está trabajando con componentes (y Polymer), el futuro se ve brillante. Mantente al tanto de las últimas actualizaciones en el blog de Polymer y regístrate en la lista de distribución de Polymer para hacer preguntas o comentarios. ¡Feliz hackeo!