miércoles, 3 de enero de 2018

¡Guerra entre librerías Javascript del cliente!

Hoy en día, en las aplicaciones web está tomando cada vez mayor relevancia la lógica del front-end, es decir, la programación que en ella se haga. Entonces, surge casi naturalmente la pregunta sobre qué framework o librería usar para desarrollar. 

A continuación exponemos una comparativa entre los distintos tipos de frameworks o librerías front-end como, por ejemplo: AndularJS, Angular2 y Knockout, React. 

Existe una amplia variedad de herramientas en el mercado. Grandes empresas han decidido poner foco en estas tecnologías dado que el futuro del desarrollo de aplicaciones web y móviles pasará más por el front-end que por el back-end. En este sentido, podemos mencionar a Microsoft con TypeScript, desarrollado por el arquitecto principal del proyecto C#; o a Google con AngularJS y su nueva versión Angular2 desarrollada incluso sobre TypeScript. Y no olvidemos la participación de Facebook con React, o plataformas independientes como Knockout, entre otros.

¿En qué nos ayudan estas herramientas?

Cómo síntesis, podemos decir que estas herramientas nos ayudan a simplificar el manejo de la lógica del lado del cliente. Nos permiten tener una estructura de código mucho más organizada, facilitando el desarrollo , mantenimiento y testing de nuestras aplicaciones.

Tantas tecnologías, ¿con cuál me quedo?

Parecería trivial decir “¿y… depende?”, pero la verdad es que hay que analizar cada caso en particular, siendo el equipo y el proyecto determinantes para tomar la decisión. Por ejemplo, si tu equipo tiene poca experiencia en aplicaciones front-end, pero sí conoce de POO, parecería ser que Angular2 es el camino. Por otra parte, si necesitás un proyecto de alta concurrencia y velocidad de respuesta, tal vez ReactJS es la alternativa. Por eso, para poder decidir te contamos cuales son las principales características de algunas herramientas para que puedas enfocar tu elección.

Angular2 está orientado a POO a través de TypeScript, aunque además soporta otros lenguajes, y posee un enfoque de “componentes”. Esto le permite, al desarrollador, asimilar más fácilmente la programación, ya que en el back-end se usa generalmente el paradigma POO.

Como contraparte de POO se encuentra el paradigma funcional (¿más aceptado por la comunidad?)(1), que permite un código más legible en cuanto a su sintaxis, como son las versiones AngularJS, ReactJS o KnockoutJS, entre otros. Este paradigma brinda la posibilidad de utilizar los conceptos “deferred” y “promises” que ayudan a lograr este aspecto.

Por otro lado, respecto a los modos de bindings que nos ofrecen cada uno de ellos, AngularJS y Angular2 soportan el modo two-way, ReactJS sólo cuenta con el modo one-way y en el caso de Knockout, contamos con las propiedades observables para suscribir a los objetos que necesitamos.

En cuanto a la mantenibilidad de cada plataforma o framework, React, al ser one-way, solamente se encarga de mostrar datos en la vista, mientras que Angular, al ser un framework, exige su utilización constante y requiere de mayor estructura y configuración. React y Knockout son mucho más flexibles en su uso, e incluso se pueden combinar con Angular.

Respecto a la participación de la comunidad, Angular en general cuenta con mayor soporte, en comparación a React y Knockout que son frameworks más chicos. Por otro lado, Angular, al ser producto de Google, cuenta con mayor marketing y mejor posicionamiento general en el mercado.

Evaluando la performance de cada uno, dejamos un link a un Benchmarck(2) muy interesante que compara los diferentes frameworks que estamos evaluando con un excelente grado de detalle.

Entonces, ante tantas tecnologías… ¿cuál nos conviene utilizar?

No tenemos una respuesta certera para eso. La elección de una u otra tecnología dependerá más bien del contexto y del proyecto que tengamos en frente, incluso también de los conocimientos y habilidades del equipo de desarrollo.

Lo que podemos asegurar, es que tendremos muchas opciones para elegir, y siempre será mejor eso que no tener ninguna opción, o sólo una.

Referencias:

(1) http://blog.wolksoftware.com/the-rise-of-functional-programming-and-the-death-of-angularjs  
(2) http://www.stefankrause.net/js-frameworks-benchmark5/webdriver-ts/table.html

Autores:
Manuel Acosta
Gonzalo Moares