Angular 2 hace un par de meses que ya tiene una versión final. Todo el mundo esperaba desde un principio un éxito arrollador. Sin embargo en mas de una ocasión me he encontrado con respuestas un poco tibias. De hecho hay cada día mas gente mirando a Facebook y a su framework React como una alternativa a Angular 2. ¿Porque se produce esto? , ¿No era Angular el framework preferido por todos?. ¿Qué es lo que esta haciendo a la gente dudar? . Vamos a hablar un poco del tema.
Angular 2
¿Qué es lo que ha cambiado con Angular?. La respuesta es : Muchas cosas y puede que en un primer punto de partida te parezcan demasiadas.
TypeScript: El primer cambio importante es que hay una apuesta por TypeScript como lenguaje de programación , aunque se puede seguir desarrollando en JavaScript plano si quieres. Esto nos guste o no es una barrera, tenemos que aprender un nuevo lenguaje. Algo que llevara tiempo y genera dudas.
Hola Mundo: El ejemplo de hola mundo hay que bajarselo de GitHub y no es precisamente un único fichero , sino que es un proyecto grande .
RxJS: El manejo de promesas para gestionar peticiones asíncronas ya tiene su complejidad. Usar RxJS nos permite avanzar más pero también es algo más que aprender.
Componentes vs Controladores: Se diseña el framework orientado a componentes y no a controladores lo que implica cambios en la forma de pensar por parte del desarrollador.
Angular 2 y 2.2: En dos meses hemos pasado a la versión 2.2 lo lo parece que hay muchas cosas que había que afinar.
Podríamos seguir hablando de cosas , pero esa es la realidad, hay bastantes cosas que aprender y es un framework nuevo.
¿Google porqué todo esto?
Es una buena pregunta , ¿Por qué tantos cambios? . Angular 1.x funcionaba tan bien que tengo mas de un amigo que me dice .. con lo que yo controlaba la versión 1 … era una máquina con ella. Ahora a volver a empezar de cero.
A mi siempre me gusta reflexionar un poco más a fondo sobre estos temas. ¿Se ha equivocado Google o ha acertado?. Para mí ha acertado y voy a intentar explicar el porqué lo veo así. ¿Qué problemas tiene JavaScript importantes para convertirse en referencia?
Mis Reflexiones
La modularización : JavaScript no soporta módulos de forma “natural” hasta la versión ES6. No solo eso sino que los navegadores ni siquiera esta muy claro como cargar de forma asíncrona los módulos y sus dependencias. ¿Angular 2 soluciona esto? . Sí a través del sistema de módulos de TypeScript que es parecido a ES6 y usando System.js como cargador de módulos. Esto ayudará a reducir el caos.
Compilación : Es verdad que para esto hay gustos . Hay gente que le gustan los lenguajes compilados y a otros los no compilados como Javascript por su flexibilidad. Pero si miramos a las grandes plataformas Java y .NET son compilados. Así que apostar por TypeScript un lenguaje de Microsoft ,me parece bastante correcto.
Arquitectura: Podemos decir que hay muchos cambios, pero la arquitectura MVC se mantiene. Disponemos de Componentes para la vista , Enrutador para la capa de control y servicios para la capa de backend.
El framework aporta una arquitectura y separación de responsabilidades clara. Algo que en JavaScript siempre hace falta.
Metadata y Anotaciones : Han apostado por añadir anotaciones y metadatos como hacen las otras dos grandes plataformas para añadir funcionalidad transversal. . Era algo que se echaba mucho en falta en JavaScript. Si miramos el ejemplo de hola mundo de Angular lo podemos ver.
import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: ` <h1>Hello {{name}}</h1> ` }) export class AppComponent { name = 'Angular'; }
@Component es una anotación que define de que tipo de componente es nuestra clase.
Inyección de dependencias: Soportan de forma muy natural las inyecciones de dependencias apoyándose en TypeScript. Esta es una de las cosas que a mi me parecen fundamentales. Es verdad que era algo ya previamente soportado , pero recordemos que con un inyector ya no somos nosotros los encargados de crear objetos sino que lo hace el framework. Se puede añadir funcionalidad transversal de forma transparente utilizando proxies.
Angular 2 y el futuro
Todo esto esta muy bien , es cierto que Angular 2 es un avance .. ¿Pero merece la pena? . Esa no es una pregunta importante , NO es la pregunta correcta. La pregunta correcta es : ¿Es Angular un framework de cliente? . ¿Podría usar todo lo que trae del lado del servidor?. La respuesta es Sí , existe otro proyecto, Angular Universal que nos permite ejecutar Angular 2 desde el Servidor .
El salto de Google ha sido tan fuerte porque su objetivo no es quedarse con la plataforma de cliente , que ya la tienen muy orientada sino que su objetivo es abrir las puertas a la plataforma servidor en donde Java y .NET mandan.
Es donde Node.js cojea porque no tiene ningún framework de integración sólido. ¿Puede ser Angular 2 un competidor de Spring framework? esa era una pregunta que antes no estaba en la mesa y puede que a futuro lo esté. Google ha sido valiente y ha arriesgado asumiendo un salto tecnológico importante para poder ganar mucho más en el futuro. Angular 2 es muy joven y hay que esperar, pero puede ser una de las plataformas con más futuro y tendremos que estar muy atentos.
Otros artículos relacionados: Angular.js vs Node.js , Angular.js inyección de dependencia y COC ,Arquitecturas Web y su evolución
Si la idea es competir con Java y .NET creo que por ahora, no hay muchas posibilidades. Para mi estaba bien con manejar la logica del cliente. Cambiar todo y olvidarse de la ‘compatibilidad hacia atras’ le resta mucho. Ya hay muchas cosas que hay que aprender y seguir aprendiendo para mantenerse competivivo en el mercado, como para aprender de cero otra tecnologia que haga lo mismo que otras que ya lo hacen muy bien.
gracias por el aporte
Por favor, aprende a escribir.
El artículo está lleno de faltas de ortografía.
Eso demuestra poco aprecio e interés por lo que haces y por la gente que te lee.
Saludos
Me puedes indicar las correcciones ,gracias 🙂
Muchos signos de puntuación… Puntos y comas con espacios delante, mismos signos después de cierres de interrogación… Vamos, que la RAE no compila esto por mucho que se fuerce. Aún así, no juzgo tus intenciones ni tu implicación, muchas gracias por el afán divulgativo.
Al deja de criticar la ortografía y ponte a trabajar, pedazo de bestia.
exacto!
Para mi angular 1 tiene mejor soporte y escalabilidad por su tiempo de vida, usar angular 2 seria muy apresurado, si es por ser mas cool usaria reacts js que es compatible con ES6, mediante Browserify.
Yo opino parecido a ti angular 2 es un poco precipitado 🙂
[…] Otros artículos relacionados: Sublime React y el uso de JSX ,RxJS y la programación reactiva. , Angular 2 y el futuro de las arquitecturas web […]
Yo creo que el hecho de aprender algo nuevo no debería ser freno a su expansión porque es el ABC de esta profesión desde siempre. Además, yo creo que cualquiera que lleve unos años en este negocio ha usado Javascript y más de una librería en más de un proyecto, con lo que la elección de Typescript se agradece mucho de cara a resolver los problemas de tipos, modularidad y diseño de los que suelen carecer la mayoría de webs que usan Javascript plano. El único freno real que veo a la expansión de Angular 2 depende del número de… Read more »
Muy buen aporte , yo opino como tú puede ser a futuro un competidor de Java a través de Typescript
Hola! tengo una duda diferente a este tema 🙂
Cual es la diferencia entre Json Web Token y OAuth2??
Tengo entendido que son para autenticacion por token, pero no logro comprender bien la diferencia entre estos dos.
Recurro a ti por que siempre eres claro en tus explicaciones 😀
Saludos y Gracias!!
Se me había traspapelao 🙁 , OAuth es un framework completo , que usa tokens 😉
En mi humilde opinión creo que eso de estar trabajando css, html y javascript en sus versiones que sean es un problema, mezclamos tantas cosas y bueno al final terminamos lidiando con tantos archivos que la verdad estresa.
así que estado viendo por ejemplo GWT y sus derivados y me parecen una buena opción y al final solo ves una sola cosa y punto.
Yo creo que estos frameworks tipo Angular tienen un presente y futuro enorme . Eso sí hay gente que con herramientas tipo GWT y JSF han conseguido ser muy productivos.
No te recomiendo GWT EN ABSOLUTO. Estuve trabajando con ese framework de transpilación y es lo peor que he visto. Tanto así que Google casi no lo usa (Y dudo que siga recibiendo soporte). Lo usaban en mi empresa y en el proceso de autocreación del CSS y el HTML, usando un RCP de Eclipse, creaba páginas pesadas de forma exagerada.
Prefiero aprender JS ES6 que volver a pasar por ahí. La depuración era un maldito infierno.
gracias por el aporte 🙂
Realmente angular 1 es bueno y aquí en México muy apenas comienza a llegar a las empresas, el problema con angular 2 es TypeScript, para mi gusto entre menos contacto tenga con Microsoft mejor xD, la cosa es que las anotaciónes llegaran hasta ES7, que sabe dios cuando estará listo y TypeScript ya las tenia, aun no se por que prefirieron TypeScript que Dart. Nodejs , para mi es el futuro, pero apenas comienza y tiene ya competición con vert.x y creo que ceylon y su ponto mas debil es que su ORM apenas comienza y no tiene algo como… Read more »
Creo que es una buena decision 🙂
no conocía waterline , gracias por el aporte 😉
Pues te diría que tienes razón, pero ni de a tanto, es imposible comparar algo como java a node, son enfoques tan distintos. Pero por otro lado la gente lo hace y sencillamente porque node es excelente en lo que hace, yo soy javero, pero he usado node en grandes proyectos, y no necesitas waterline asociado a sailjs, puedes usar si deseas mongoose con mongo, o en su defecto hacerlo con modelos mas flexibles a la final…. Y para complementar un poco mira el enfoque de java8 y hacia donde se dirije …..compáralo con node…python o ruby…..mira sobre toda la… Read more »
Te agradezco el aporte 🙂 , siempre es bueno contrastar otras opiniones. A mi node a veces no me gusta que esta evolucinando constantemente , todo cambia cada demasiado poco tiempo.
Para generar una aplicación completa con arquitectura en React hay que agregarle muchas librerías, ya que React solo es una librería de la vista, por ejemplo yo suelo usar Redux, que no es precisamente fácil de aprender(al menos no para mi que soy programador Java) pero una vez que lo entiendes cambia tu forma de resolver los problemas, a ello hay que sumar librerías para normalización, internacionalización, etc, etc. Yo creo mas bien que el problema de Angular fue cuanto se demoraron en sacar la versión final, además que incluso en las versiones RC los cambios eran enormes, tanto que… Read more »
Muy buen aporte , muchas gracias
Completamente de acuerdo.
Además, los que “entramos nuevos”, viniendo de Java preferimos de largo TypeScript a JS. Es mucho más familiar, más estructurado, etc.
Yo creo que aquí habrá mucha guerra entre la gente que prefiera typescript y los que usen ES6
Es muy cierto que habrá guerra, pero Es6 es igual de fácil de aprender, pero al no saber mucho de fronted los desarrolladores de backend se inclinan por typescript es el símil de lo que conocen, pero a tener en cuenta Cecilio, que las opiniones anteriores son de mucho javero sesgado, que entre comillas eran full stack, pero el mundo ha cambiado mucho desde eso, ellos tratan de acomodarse con lo que saben mas no absorben de lo nuevo, este blog me gusta porque se habla de todo un poco y soy visitante frecuente. Soy javero de nacimiento, pero decidí… Read more »
Opino como tú que hoy es necesario ser poliglota y estar abierto a nuevos lenguajes y tendencias.
Hay un aspecto importante de Angular 2 que causa rechazo: es un “framework” que intenta reinventar la rueda y ofrece funcionalidad que ya está disponible en librerías de uso habitual. La gente cada vez valora más la transversalidad y no tener que estar estudiando continuamente nuevos procedimientos para hacer lo mismo que ya saben. El enfoque de React es mucho más razonable.
También es destacable el grado de aceptación de Angular. La cantidad de gente que lo abandona es bastante grande:
http://stateofjs.com/2016/frontend/
Gracias por el aporte 🙂 , entendiendo muy bien tu planteamiento y pienso que es también muy razonable , ¿que librerías usas tu para complementar React y acercarlo a un enfoque de framework completo? Gracias
Como librerías básicas para complementar a React utilizo Axios y Ramda (para mí: Ramda > Lodash > Underscore).
No conozco Axios lo voy a echar un veo 🙂
Incluyo otra encuesta reciente sobre el estado del “front-end”:
https://ashleynolan.co.uk/blog/frontend-tooling-survey-2016-results
gracias
Comparto totalmente, cuando termine de aprender AngularJS v1, sale el v2 totalmente diferente. No voy a migrar a la v2 a no ser que realmente necesite. AngularJS v1 me parece muy bueno.
Por ahora funciona muy bien 🙂
Totalmente deacuerdo, el mayor problema es eso un “framework”, la mejor solucion es utilizar librerias existentes con las que te sientas mas comodo y cumplan su cometido, el principio de has pequeñas librerias pero que las hagan bien aplica muy bien en este mundillo, saludos!