1.3 Porqué aprender AngularJS

AngularJS es un framework para JavaScript. Vamos a comparar AngujarJS con otros frameworks para explicar deberíamos aprender AngularJS y no otros frameworks. Concretamente vamos a compararlo con

Tengo que decir que mis comentarios aunque pretenden ser objetivos estarán sesgados al ser yo el que estoy impartiendo un curso de AngularJS

JQuery

Podemos pensar que debe ser algo como JQuery pero mas moderno, nada mal lejos de la realidad compararlo con JQuery.

JQuery realmente no tiene un mayor nivel de abstracción que el propio JavaScript estándar del navegador. JQuery debería haber sido realmente el API nativo de los nagevadores y no una librería que pretender cubrir los huecos dejados por lo navegadores como incompatibilidades entre ellos, API farragosa, etc. Así que JQuery es un parche sobre los navegadores una simple librería para que todo no sea tan tedioso de hacer pero es lo mismo que ya existe en el navegador. Con JQuery por ejemplo no existe el concepto de modelo de una aplicación o no te dice como estructurar tu aplicación etc. Por ello JQuery no es un framework sino simplemente una librería a usar por nuestra aplicación.

AngularJS juega en otra liga, es un framework que pretende definir la arquitectura de tu aplicación que define claramente la separación entre tu modelo de datos tu vista y tu controlador. Y estás obligado por AngularJS a seguir esa estructura. Ya no haces el JavaScript como tu quieres sino como AngularJS te manda. Y eso realmente da mucha potencia a tu aplicación ya que al seguir una arquitectura definida AngularJS puede ayudarte en la aplicación y tener todo mucho mas estructurado.

A vece alguno piensa que con jQuery tambien se podría hacer todo eso pero solo con pesar las ahora de trabajo que harían falta me entran mareos. ¡Si con AngularJS tienes ya gran cantidad de cosas ya hechas y disponibles desde el primer día!!!

Backbone

Backbone 1) es uno de primeros frameworks cuyo objetivo era organizar las aplicación JavaScript y JQuery no ayudaba en eso ya que no era su objetivo. Se añade en esta comparativa ya que hace unos años era muy utilizado entre gente que quería ir mas allá de JavaScript y tener una arquitectura Modelo-Vista-Controlador bien definida.

El problema de Backbone es que su diseño es muy minimalista y hace muy pocas cosas para lo que hacen a día de hoy otros frameworks. Sin embargo hay que decir que Backbone mas muchos pluging se pueden hacer muchas cosas pero eso no es la solución. Añadir tantos plugin es al final un dolor de cabeza y cada uno realmente es de su padre y de su madre. Es mucho mas cómodo que el propio framework te de todas esa funcionalidad central que tanto necesitas.

Así que no empieces ningún proyecto nuevo con Backbone y alégrate si tienes algún proyecto antiguo que mantener con Backbone ya que seguro que está mejor hecho que si hubiera estado con jQuery únicamente.

Ember

Ember es otro framework JavaScript pero a diferencia Backbone este si que ofrece gran cantidad de funcionalidades. Realmente es el framework contra el que compite AngularJS y nuestra elección debería ser entre uno de los dos. Obviamente la conclusión va a ser que la mejor opción es AngularJS sino no estaría donde este curso de AngularJS sino que estaría dando uno de Ember.

¿que ofrece Ember que no ofrezca AngularJS? Ember tiene algunas coas buenas que no tiene AngularJS:

  • Rendimiento : No es que el rendimiento de Ember sea muy bueno es que el de AngularJS no es de lo mejores sobre todo cuando hay gran cantidad de información en una pantalla. Por suerte, el equipo de AngularJS esta trabajando mucho para mejorar el rendimiento.
  • Rutas: El servicio de rutas de Ember es claramente superior al de AngularJS 1.2, por suerte la versión 1.3 de AngularJS mejorará mucho su servicio de rutas.
  • Principio de acceso uniforme : En Ember puedes acceder a un propiedad y luego cambiarla como un una función que calcula su valor y desde la vista se seguirá viendo del mismo modo. Es decir que te abstrraes de si el dato es propiedad o función. Esto se llama Principio de acceso uniforme y desde mi punto de vista es lo mejor que tiene Ember aunque para ello se debe pagar un precio que es no tener la sencillez de AngularJS.
  • Convención sobre configuración: En Ember hay muchas convenciones en vez de haber configuraciones lo que hace que con menos líneas se haga lo mismo. Eso se llama Convención sobre Configuración.

Un post sobre Ember los tienes en Why does Ember.js rock?

Aunque eso está bien todo ello viene con un precio. El código que tienes que escribir en JavaScript está lleno de código de Ember , en AngularJS siguen la filosofía de los POJSO (Plain Old JavaScript Objects) que es como los POJO de Java. Es decir que no hay que estar heredando de otras clase de AngularJS para trabajar son simplemente clases JavaScript normales. Esto para mi fue lo que me decidió por AngularJS ya que eso me deba una oportunidad de poder hacer muchas cosas con AngularJS sin que pasarana cosas “raras” ya que eran solamente objetos JavaScript normales y corriente. No sabes la de cosas raras que acabas haciendo en un proyecto y la de problemas que añades si tienes que pensar que tu modelo debe heredar de clase predefinidas de tu framework.

Por supuesto no es solo lo anterior lo mejor de AngularJS, otra cosa para mi importante y que no se le suele dar mucha importancia es la flexibilidad que me da Angular para organizarme todo como quiero. Está claro que AngularJS impone unas normas y esas son de obligado cumplimiento pero son solo unas pocas , luego tengo mucha libertad de organizarme todo como quiera. Es como si fuera un framework casi acabado y que en el que tienes que rematar el trabajo con tu propia arquitectura. Para mi eso es una bendición ya que yo si que quiero mi propia arquitectura, aunque para otra gente podría ser algo negativo ya que quieren que se lo den todo hecho. En ese sentido Ember tiene una arquitectura mucho mas rígida lo que como acabamos de ver puede ser una ventaja para algunos.

Yo comparo a Ember y a AngularJS con el mundo Java de la siguiente manera (salvando las distancias y es simplemente para que se entienda las diferencias entre ellos). Para mi Ember es como Grails que ya ha decidido como es todo. Es mucho mas fácil hacer todo pero es difícil salirte de su filosofía. Por otro lado AngularJS es como Spring+Hibernate+…+… etc, etc.. Todos juntos no hacen nada ya que cada uno no sabe mucho del otro pero los pueden juntar a tu manera y montarte tu propia arquitectura.

React

React es el último framework (o realmente librería) que se ha añadido a la fiesta , es el que se ha puesto de moda en 2015 y está desarrollado por Facebook . React está mas orientado a la parte visual y al renderizado mientras que AngularJS es un framework mas completo. De hecho en la conferencia de AngularJS de 2015 (la ng-conf) una de las charlas fue “Angular + React = Speed” puedes ver el video y las slides. Por lo que React sería mas un complemento de AngularJS que un reemplazo.

Aun así React se ha vuelto muy popular entre ciertos sectores del mundo JavaScript. Parte de su éxito radica en una curva de aprendizaje mas corta , que parece mas cercano a JavaScript (aunque AngularJS tambien es JavaScript), pero también debido a que junto con React facebook ha incluido otras librerías como Flux, Relay, Inmutable.js o estándares como GraphQL.

La pregunta que mucha gente se hace a principios de 2016 es si aprender React o AngularJS. A esa pregunta nadie tiene la respuesta correcta a fecha de hoy pero mi opinión personal es la siguiente: Si tu parte servidora está hecha con Java o .NET o vienes de esos mundos deberás aprender AngularJS pero si tu parte servidora está hecha con Node.js o tiene experiencia con Node.js debería aprender React.

Por último hay que decir que la nueva versión de AngularJS , se llama Angular 2 y supone una cambio importante en AngularJS . Esta nueva versión que a principios de 2016 aun está en beta, ha conseguido que sea mas sencilla, que necesite menos código y que sea mas rápida. Sin embargo lo ha hecho a cambio de perder la compatibilidad con AngularJS 1.x. Esta falta de compatibilidad hacia atrás es lo que también puede haber ayudado al éxito de React.

Pero como decimos, 2016 será el año de ¿React o Angular 2?

Por último es una cuestión de popularidad, AngularJS vemos los siguiente números sacados del blog AngularJS vs. Backbone.js vs. Ember.js:

Metric AngularJS Backbone.js Ember.js
Estrellas en Github 27.2k 18.8k 11k
Módulos de terceras partes 800 ngmodules 236 backplugs 21 emberaddons
Preguntas en StackOverflow 49.5k 15.9k 11.2k
Resultados en YouTube ~75k ~16k ~6k
Contribuidores en GitHub 928 230 393
Usuarios de extensiones Chrome 150k 7k 38.3k

Aunque esos datos ya son antiguos y la guerra está ya únicamente entre React y angularJS.

Aun así hay una gráfica que suele circular por internet sobre como te gusta AngularJs a lo largo del tiempo:

Y está sacada del siguiente blog My Experience With AngularJS - The Super-heroic JavaScript MVW Framework. Y significa que con AngularJS tienes tus altibajos pero en general cada día te gusta mas.

Por último podríamos decir que AngularJS está hecho por Google pero después de todo no creo que sea algo que nos haga decidor usarlo.

1) Formalmente Backbone.js
unidades/01_introduccion/03_porqueangularjs.txt · Última modificación: 2016/01/28 19:37 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0