Angular es un framework JavaScript, gratuito y Open Source, creado por Google y destinado a facilitar la creación de aplicaciones web modernas de tipo SPA (Single Page Application).
Algunos incluso llegan a decir de Angular que es lo que debería haber sido HTML si se hubiese pensado desde el principio para crear aplicaciones web, y no documentos. Casi nada.
Su primera versión, AngularJS, se convirtió en muy poco tiempo en el estándar de facto para el desarrollo de aplicaciones web avanzadas.
En septiembre de 2016 Google lanzó la versión definitiva de lo que llamó en su momento Angular 2, y que ahora es simplemente Angular. Este nuevo framework se ha construido sobre años de trabajo y feedback de los usuarios usando AngularJS (la versión 1.x del framework). Su desarrollo llevó más de 2 años. No se trata de una nueva versión o una evolución de AngularJS, sino que es un nuevo producto, con sus propios conceptos y técnicas. Además, Angular utiliza como lenguaje de programación principal TypeScript, un súper-conjunto de JavaScript/ECMAScript que facilita mucho el desarrollo.
Como en casi todo hoy en día, tiene muchos fans acérrimos y muchos detractores. Básicamente, Angular o lo amas o lo odias. No suele haber mucho término medio.
A continuación te vamos a exponer los motivos por los que a nosotros nos encanta Angular, en especial para desarrollo empresarial.
1. No me hagas pensar
Dado que Angular es un framework, ofrece muchas más "opiniones" y funcionalidades de serie que una simple biblioteca. Con otro software similar, lo más común es tener que "tirar" de varias bibliotecas de terceros a la hora de desarrollar una app. Lo más probable es que necesites algunas adicionales para hacer el routing, para la gestión de dependencias, para realizar llamadas a APIs REST, para hacer el testing, etc... También hay muchas decisiones que tomar sobre cómo organizar el código, la arquitectura de la aplicación... Tantas que pueden llegar a abrumar.
Angular ofrece más "opiniones" de serie, ayudándote a arrancar sin intimidarte por la toma de decisiones. Es decir, con Angular ya sabes desde el primer momento cómo organizar el código, cómo se realizan las diferentes tareas que necesitas, la arquitectura de la aplicación...
Una cuestión muy importante es que esta consistencia que te impone también ayuda a las empresas a hacer nuevas contrataciones de programadores o a incorporar a nueva gente a los equipos. Un nuevo programador que retome un proyecto de Angular se siente como en casa de forma rápida, ya que si conoce Angular conoce la manera en la que se hacen las cosas con este framework. Esto facilita también el intercambio de programadores entre proyectos.
2. TypeScript
Aunque se puede programar en ECMAScript "puro", el equipo de Angular decidió que haría todo el desarrollo con el lenguaje TypeScript, y casi toda la documentación y los ejemplos que encuentras por ahí utilizan este lenguaje.
A mucha gente esto le parecerá un error, pero el criterio que ha seguido el equipo de Angular sobre la variedad de JavaScript a utilizar tiene muchas ventajas.
Una de las primeras es la consistencia en la documentación. Si navegas por la Web intentando encontrar ejemplos y tutoriales de otras bibliotecas de JavaScript vas a ver de todo, pero la única constante es la inconsistencia que existe. Por ejemplo, ES6 (o sea, ECMAScript 2015) ofrece varias formas diferentes de declarar un objeto, lo cual puede confundir a muchos. Con TypeScript esto no pasa, y toda la sintaxis y la manera de hacer las cosas en el código es la misma, lo que añade coherencia a la información y a la forma de leer el código.
Aunque Angular no te obliga a usar TypeScript, el equipo del core de Angular sí que lo ha adoptado y en la documentación sugiere usar TypeScript por defecto. Esto implica que los ejemplos relacionados y los proyectos de código abierto parezcan más familiares y consistentes. Angular ya ofrece ejemplos claros que enseñan cómo usar el compilador TypeScript
Esta consistencia debería ayudar a evitar la confusión y la sobrecarga en la toma de decisiones derivadas de empezar con Angular.
Todo esto redunda además, a largo plazo, en un mejor y más fácil mantenimiento de las aplicaciones.
3. Componentes web
Un componente en Angular es una porción de código que es posible reutilizar en otros proyectos de Angular sin apenas esfuerzo, lo que permite un desarrollo de aplicaciones mucho más ágil, pasando de un "costoso" MVC a un juego de puzles con nuestros componentes.
El diseño de Angular adopta el estándar de los componentes web. Se trata de un conjunto de APIs que te permiten crear nuevas etiquetas HTML personalizadas, reutilizables y auto-contenidas, que luego puedes utilizar en otras páginas y aplicaciones web. Estos componentes personalizados funcionarán en navegadores modernos y con cualquier biblioteca o framework de JavaScript que funcione con HTML.
El soporte directo actual de este estándar por parte de los navegadores es muy reducido (básicamente Chrome a la hora de escribir esto), aunque existen polyfills para suplir esta carencia.
Los componentes que creas en Angular son fáciles de convertir en componentes web nativos. A largo plazo esto es una gran ventaja pues te permitirá reutilizar componentes que crees en Angular en otro tipo de aplicaciones. ¡Más reutilización de tu trabajo!
4. Un camino de futuro estable (¡por fin!)
Uno de los grandes problemas del mundo JavaScript actual es que hay tantos cambios y tan frecuentes, que todo el mundo acaba "quemado" solo tratando de seguir el ritmo de las novedades. De hecho algunas bibliotecas JavaScript pegaron tantos cambios desde su aparición hasta que se hicieron estables que la mayor parte de la información que hay por ahí está obsoleta. Por no mencionar que el código desarrollado hace años ya no vale para nada y hay que actualizarlo :-(
Angular, a pesar de haber contribuido a todo eso cuando anunció el doloroso cambio desde AngularJS 1.x a lo que tenemos ahora, va a ser menos dado a los grandes cambios traumáticos de versión en versión.
Angular es la reinvención cuidadosa y metódica de un framework maduro como era AngularJS. A partir de la aparición de su primera versión estable en septiembre del año 2016, aseguran que hay un equipo detrás tomando decisiones meditadas y pausadas sobre el futuro, lo que evitará las prisas y el "yo también" que caracteriza a otras bibliotecas y frameworks.
Además en otras bibliotecas y frameworks, dado que debes recurrir a bibliotecas de terceros para hacer muchas cosas, tienes más mazas en el aire que debes controlar, con sus propios cambios de versión e incompatibilidades, desapariciones o cese de mantenimiento de las mismas, etc... En Angular al estar todo integrado solo debes preocuparte de Angular.
No te dejes engañar por los cambios bruscos de versión en Angular: no significa que haya grandes modificaciones, solo que hay alguna cosa que rompe la compatibilidad (aunque sea mínimamente). Pero puede ser algo muy pequeño y además ofrecerán herramientas automáticas para hacer la migración.
Con Angular la idea es que podemos apostar por este framework a largo plazo. Y esto es algo de suma importancia, sobre todo en proyectos grandes y en empresas de producto, donde los desarrollos se mantienen durante varios años.
5. Gran soporte de herramientas
Cuando programas raramente vas a hacerlo en un editor de texto plano. Usarás editores avanzados, IDEs y otras herramientas relacionadas como "Linters" (revisores de estilo y buenas prácticas en el código).
Las plantillas de Angular almacenan por separado el código de la Interfaz de usuario y el de la lógica de negocio, por lo que puedes sacarle partido a las muchas herramientas ya existentes para editar este tipo de archivos. Otros frameworks como React, por ejemplo, mezclan en un mismo archivo todo el código. Si bien esto puede tener sus ventajas, dificulta el uso de herramientas estándar de desarrollo.
Además, gracias a la popularidad de Angular, los principales editores e IDEs ofrecen ya extensiones para poder trabajar con este framework de la manera más cómoda posible.
---
Evidentemente, según tus necesidades, tu situación y tus gustos puede que no estés muy de acuerdo con todas las afirmaciones. Si es así puedes dejar tu opinión respetuosa en los comentarios del post.