AngularJS vs. Polymer: ¿cuál es más conveniente?

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

Polymer: creando aplicaciones con Web Components

El estándar Web Components, que conocimos en nuestro último artículo, está lejos de alcanzar su madurez. Sus convenciones de codificación, «buenas prácticas» y otros principios todavía no son tan sólidos como los que sustentan las características más tradicionales de HTML. Entonces, ¿por dónde deberíamos empezar si queremos construir una aplicación con Web Components? Un camino seguro es utilizar bibliotecas que implementan sus propios Web Components, como X-Tag, Bosonic o la más importante de todas: Polymer, desarrollada por Google. Polymer nos ofrece una serie de elementos HTML ya implementados, además de permitirnos crear nuestros propios elementos, para construir aplicaciones web escalables y fáciles de mantener. Los elementos que trae Polymer son clasificados de la siguiente manera:

  • Iron Elements. Son el núcleo de Polymer. Incluyen controles de formularios (como campos de texto, switches y checkboxes) y elementos para construir la grilla (columnas) de nuestra página.
  • Paper Elements. Una serie de elementos generales que implementan material design, el lenguaje visual de Google, basado en el aspecto y el comportamiento de las hojas de papel.
  • Google Web Components. Elementos asociados a aplicaciones de Google, como Maps, Sheets, YouTube, Analytics, etc.
  • Gold Elements. Elementos para utilizar en sitios de comercio electrónicos.
  • Neon Elements. Implementan efectos de animación.
  • Platinum Elements. Elementos que satisfacen necesidades específicas de las aplicaciones web (no así de un sitio web tradicional), como la capacidad de conectarse con dispositivos móviles mediante Bluetooth.
  • Molecules. Para incluir bibliotecas JavaScript externas.

Polymer es un buen punto de partida para implementar Web Components, una tecnología que puede llegar a definir el futuro de las aplicaciones web. Sin embargo, todavía no cuenta con una documentación exhaustiva para quienes quieran aprender a usarlo, y presenta ciertos problemas de compatibilidad, especialmente en dispositivos móviles (incluso a pesar de que utiliza polyfills). Por el momento, se recomienda utilizarlo para proyectos experimentales y no para aplicaciones en producción orientadas a un público amplio.

Enlaces externos