Angular2: ¿Y si nos damos un tiempo?

ionic-angular-v2

Ayer tuve la oportunidad de acercarme durante un par de horas a disfrutar de la charla ofrecida por la comunidad MsCoders sobre cómo trabajar con Ionic Framework en Visual Studio 2015.

La charla tuvo lugar en la sede de Microsoft en La Finca. En términos generales la charla estuvo bien y el ponente (no he encontrado su twitter o sitio personal para enlazarlo, perdonad) nos puso en contexto de una manera amena sobre qué es y cómo trabajar con Ionic. Me llevé una tarde agradable.

Sin embargo, no venía a escribiros sobre la charla en si y si sobre un tema que salió a colación durante la ronda de preguntas. Un tema que llevamos un año oyéndolo y en el cual cada uno tenemos una opinión diferente.

Las preguntas eran  originadas a que Ionic tiene una dependencia muy fuerte con AngularJS, el equipo de desarrollo de Ionic ya está trabajando en Ionic2 para que soporte Angular2 por defecto.

Y la pregunta de casi todos los desarrolladores que tienen pensado hacer una aplicación en Ionic y que no saben nada todavía sobre AngularJS, suele ser la mismo debate interno ¿Empiezo a trabajar y aprender sobre AngularJS o ¿empiezo a darle duro a Angular2? Bueno, yo tengo mi opinión al respecto.

¿Nueva versión? Mejor, nuevo framework

Lo primero que me gusta explicar antes de responder a este debate por mi parte es que AngularJS y Angular2 no tienen nada que ver el uno con el otro. No nos encontramos en una actualización al uso del framework, migrar una aplicación de AngularJS v1.x a Angular2 todavía no es 100% factible y se antoja harto difícil en proyecto legados de hace unos cuantos años hechos con las primeras versiones.

Angular2 conlleva la asimilación de nuevos conceptos y una nueva forma de desarrollar aplicaciones en el front. Conceptos que es cierto que otras librerías y framework ya llevan desarrollando un tiempo (ReactJS y Ember2, por ejemplo)  y que AngularJS no acababa de dar un paso definitivo hacia ellos.

Lo que pretende Google es aportar un framework nuevo que incluya todas las nuevas normas de desarrollo y ha intentado corregir  todos los problemas que presentaba AngularJS v1.x  y que tanto han hecho patente los desarrolladores de la comunidad.

Pero crear un framework nuevo no significa que estemos ante una nueva versión y por tanto AngularJS v1.x y Angular2 son primos, pero no hermanos. El lío esta provocado por los nombre comerciales. En una jugada de marketing por parte de Google y por miedo a llegar algo tarde con su nuevo framework o de no tener la aceptación por parte de los desarrolladores, decidió usar el nombre de Angular para conseguir publicidad rápida. Angular es una marca reconocible y en estima para los desarrolladores de todo el mundo. Poner el mismo nombre es una buena jugada para que la gente se interese por él.

Esta es la raíz de todas nuestras dudas. Estamos acostumbrados a que cuando un framework saca una versión nueva, suela tener una fácil migración o por lo menos la nueva versión siga permitiendo los elementos de la versión vieja durante un periodo de tiempo hasta que tengamos todo migrado. Aquí no. Se ha optado por un borrón y cuenta nueva, pero sin la valentía de bautizarle con otro nombre nuevo.

Pero, ¿tan poco se parecen?

La forma en que encararemos una aplicación en el futuro va a ser diferente. Angular2 tiende por crear aplicaciones por medio de una jerarquía de componentes. Los componentes tendrán un cometido parecido al de las directivas pero con una funcionalidad mucho más visual y de reutilización.

Los controladores mueren tal y como los conocemos en el nuevo framework. Tenemos que dejar de pensar en arquitecturas tipo MVVM y MVC que, aunque han hecho una gran función, contienen conceptos heredados de la orientación objetos y que, por lo general, no siempre se asientan como forma natural de generar aplicaciones con JavaScript. Angular2 tenderá a seguir más los paradigmas de la programación funcional o por lo menos aproximarse a ella. En Angular2, contaremos con componentes de alto nivel que se encargarán de orquestar los datos entre los componentes hijos.

El servicio $scope ha ido muriendo a cada versión de AngularJS v1.x y en esta ocasión desaparece tal y como lo conocemos para beneplácito de los desarrolladores que lo hemos sufrido y lo hemos intentado esquivar todo lo que hemos podido.

Si estáis interesados en saber más o aprender sobre Angular2, no dudéis en entrar en su web oficial.

Google intenta ayudarnos

Estas diferencias entre versiones, han traído muchos problemas desde un principio y quejas por parte de la comunidad más crítica. La no posibilidad de retrocompatibilidad no fue entendida en un primer momento.

Google suele escuchar bastante a sus desarrolladores y a día de hoy están saliendo nuevas versiones de AngularJS. Estas nuevas versiones están muy encaminadas a crear ciertos puentes para que el día de mañana la migración sea menos tormentosa. A la versión AngularJS 1.5, que ahora tiene un nuevo elemento denominado ‘component’, también se le une la reescritura de la librería de AngularJS dedicada al router y que enfatiza mucho mejor en conceptos típicos de Angular2.

Por lo menos desde Google se esta intentando ayudar, aunque lógicamente no nos va a ser nada fácil dar el paso de una a otra.

Por lo tanto ¿Qué hacemos?

AngularJS v1.x va a seguir siendo mantenida durante bastante tiempo. Existe un roadmap bien prefijado para próximas versiones y Google tiene pinta que por ahora no nos va a dejar tirados.

Angular2 es un framework que promete mucho en cuanto a mejoras de desarrollo y de optimización de render, pero no tenemos que engañarnos, Angular2 sigue estando en versión beta, lo que significa que se encuentra en constante evolución y cambios, además de la resolución de muchos bugs.

Los desarrolladores front nos encontramos en una etapa de exploración donde ver cómo enmarcamos todo lo aprendido y ver si la orientación a componentes es una moda pasajera o viene para quedarse. Yo creo y espero que si.

Pero ¿es el momento de embarcarnos en un proyecto con Angular2? No. No solo porque el framework se encuentre todavía en beta, si no que todavía queda por ver si es la mejor aproximación para nuestro nuevo proyecto.

Existiendo a día de hoy librerías como ReactJS, con una comunidad cada vez más madura y con las buenas sensaciones que está dando por ahora, es difícil predecir si Angular2 no llegará un tarde en su camino para convertirse en el framework pionero o más influyentes del mercado tecnológico. ReactJS, aun con sus detractores, se adapta muy bien a JavaScript y la programación funcional. Tendremos que ver si Angular2 se adapta tan bien como su competidora.

Si tienes que empezar un proyecto profesional hoy mismo y quieres hacerlo con tecnologías de Angular, no dudes en empezarlo con AngularJS v1.x. No es ninguna locura. Tu proyecto no va a quedar desfasado, no te dejes llevar por la última moda y desarrolla tu web o webapp con todos los conocimientos que tienes y todos los conceptos asimilados. Trabajarás más rápido y tendrás una mejor aplicación.

Eso si, te recomiendo que no programes tu aplicación con una guía de estilo cualquiera. Es ideal que empieces a dirigir tus desarrollos con arquitecturas que se orienten a componentes. Con AngularJS v1.x se puede hacer perfectamente, simplemente hay que seguir una serie de pautas y buenas prácticas para conseguirlo.

La propia Google, en su empeño por no dejarnos desamparados, ha creado una pequeña guía, en pleno desarrollo, donde van explicando, en forma de memoria, todo lo que ellos están haciendo para el día de mañana migrar a Angular2.

Por lo que si eres desarrollador de Angular veterano, quizá sea buen momento para que eches un vistazo en este enlace

Espero que mi reflexión os haya sido de utilidad.

Nos leemos 🙂

PD: Os dejo otro tutorial, esta vez de Todd Motto. Todo un referente en la comunidad de Angular.

Imagen | ionic

Anuncios

4 comments

  1. myyby · enero 13, 2016

    Más claro imposible, gracias por el gran aporte, todas las recomendaciones y recursos!! =D

    Por cierto el Twitter de quien dio la charla, Rodrigo Cabello es el siguiente: @mrcabellom

    🙂

    Me gusta

  2. Pingback: AngularJS 1.x: Componentizando tus aplicaciones | el.abismo = de[null]
  3. Sebastian · septiembre 8, 2016

    Este post es de enero, entiendo que actualmente está en RC6. Esto cambia en algo el análisis que realizaste? Estoy comenzando un proyecto de desarrollo desde cero, y tengo que tomar una decisión al respecto. Me ayudaría mucho una actualización a la fecha de la situación de Angular 2. Muchas gracias

    Me gusta

    • jdonsan · septiembre 8, 2016

      Buenas Sebastián,

      La respuesta no es fácil sin saber más sobre tu contexto actual.

      Desde que se publicó este post a ahora Google ha mejorado mucho ambos Frameworks tanto Angular2 se encuentra estable y con cada vez más comunidad como AngularJS 1.x ha evolucionado para poder desarrollar aplicaciones que puedan migrarse de mejor manera a Angular2.

      Estoy recomendando últimamente que si no sabes nada de Angular, directamente te embarques en Angular2. Si ya sabes AngularJS 1.x yo directamente te recomendaría que te embarques con Angular 1.5 que es una versión que te permitirá migrar fácil a Angular2.

      Aquí te dejo un tutorial de cómo hacer apps con AngularJS 1.x con estilo Angular2: http://ngmigrate.telerik.com/

      Un saludo compañero

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s