04/12/2015

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

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

0

angularjs Aplicaciones en Facebook aplicaciones mobile behavioral targeting Botones Call-to-action breadcrumbs breadcrumbs web búsqueda de personal búsqueda facetada Call-to-action buttons Client-side cliente-destacado cms a medida coding comercio electrónico content marketing CSS3 PIE cuanto debe pesar un sitio data-driven web design Datos estructurados Defacement Denegación de servicio Desarrollar una aplicación web desventajas de PhoneGap diseñar newsletters diseño web diseño web argentina diseño web esqueuomórfico Diseño web responsive Diseño web responsivo diseño web santa fe diseño web Smart TV diseño web televisores DOM desde PHP enlaces rotos filtros de búsqueda flash flat web design formularios sitio web fragmentos enriquecidos función de autocompletar futuro de la realidad aumentada html HTML5 html5shiv inbound marketing Initializr interfaces Web para televisores javascript jobs jQuery Mobile Mapbox maquetado html/css maquetador web masonry layout menú de navegación menú desplegable Metodologías ágiles Modernizr MVC Navegación por teclado oferta laboral OpenStreetMap paginas de Facebook Paper js Paper js framework personas Phishing plan de QA Polyfills polymer portfolio-destacados portfolio-inicio programacion de CMS Programadores WordPress página de contacto página de error 404 que es Backbone.js Realidad aumentada Resultados instantáneos server-side skeuomorphic design sliders y usabilidad soporte Internet Explorer Storytelling Underscores usabilidad usabilidad buscadores user-centered design ux velocidad de carga web Vendor prefixes ventajas jQuery Mobile Ventanas integradas versiones antiguas de Internet Explorer WAI-ARIA web components web imprimible Web Semántica WordPress para ecommerce