Como señalamos en los últimos artículos, AngularJS y Polymer son herramientas desarrolladas por Google orientadas a la creación de aplicaciones web. Entre sus características comunes, tanto AngularJS como Polymer cuentan con data binding: la interfaz de usuario está conectada a un objeto de datos, de manera que cuando el usuario realiza una modificación en la interfaz, los datos se actualizan automáticamente, y viceversa. Sin embargo, son dos proyectos separados, cuyas diferencias es bueno tener en cuenta para saber cuál de las dos es más indicada para nuestro proyecto.
AngularJS es un completo framework que implementa el patrón Modelo-Vista-Controlador (aunque, en la práctica, la capa Controlador puede ser reemplazada por otra estructura). Su mayor característica es que todo el procesamiento de datos se realiza en el lado cliente.
Polymer no es un framework, sino una biblioteca para crear Web Components, es decir, elementos del DOM independientes, con su propio HTML, CSS y JavaScript. Funciona como un API que permite manipular Web Components y los enriquece con características agregadas.
La principal diferencia es que, mientras AngularJS propone una solución integral para desarrollar aplicaciones web, Polymer es más bien un conjunto de elementos aislados, que pueden tener que complementarse con otras herramientas para obtener resultados satisfactorios. Por ejemplo, AngularJS ofrece funciones de enrutamiento de URL, servicios y comunicación con servidores que no son soportadas (parcial o totalmente) de forma nativa en Polymer. Por otra parte, AngularJS no permite manipular Web Components con la misma libertad que Polymer (se pueden crear custom elements pero sin encapsulamiento).
A pesar de estas diferencias, ambos proyectos parecen destinados a cruzarse. La segunda versión de AngularJS tendrá un mayor soporte de Web Components, pudiendo integrarse fácilmente con bibliotecas como, por ejemplo, Polymer. Mientras tanto, los desarrolladores de Polymer han manifestado su intención de que, en el futuro, se convierta en un framework completo que no necesite de ningún otro para construir aplicaciones complejas.
Sin embargo, todavía quedan muchos desafíos por afrontar:
Desventajas de AngularJS
- La nueva versión, AngularJS 2, será una reescritura total de la anterior. Todo indica que las aplicaciones actualmente desarrolladas con AngularJS quedarán obsoletas, o tendrán problemas para migrar a la nueva versión.
- El procesamiento del lado cliente tiene dos grandes problemas:
- Se sobreexigen los recursos del dispositivo del usuario.
- El contenido, al ser generado dinámicamente, no es fácilmente indexable para los buscadores.
- Es difícil de entender para la mayoría de los desarrolladores.
Desventajas de Polymer
- El soporte de Web Components todavía es muy bajo. Solo Google Chrome los implementa totalmente, debido a que sus propios desarrolladores están entre los autores de la especificación.
- Web Components todavía es un estándar en proceso de desarrollo. Es probable que las aplicaciones que hoy se desarrollen en Polymer tengan que sufrir numerosas modificaciones a medida que la especificación cambie.
- Polymer suele funcionar mal en plataformas que no sean Android.
- Polymer impone el uso de material design. Las aplicaciones web que siguen este lenguaje visual solo se mimetizan adecuadamente con versiones de Android posteriores a la 4, que son las únicas con ese diseño.
Conclusiones
AngularJS se orienta al desarrollo de aplicaciones integrales, mientras que Polymer es ideal para crear elementos aislados. Actualmente, AngularJS es más confiable que Polymer para su uso en producción. Sin embargo, los Web Components de Polymer pueden ser esenciales en un futuro no muy lejano. Es de esperar que, con el tiempo, ambas herramientas resuelvan sus defectos.
Enlaces externos