Introducción
Situación actual del desarrollo web
Desde su creación en los años 1990 hasta nuestros días, la Web ha evolucionado mucho.
Diseñada inicialmente para compartir documentos estáticos en Internet, hoy podemos utilizar aplicaciones reales directamente desde nuestro navegador. Ahora están en la Web la mayor parte de las funcionalidades que históricamente estaban disponibles en las aplicaciones de clientes pesados, como el uso sin conexión, notificaciones push, interacciones con el dispositivo (acceso a la orientación, a la cámara), etc.
Para esto, los motores JavaScript de los navegadores y APIs HTML, han tenido que evolucionar. Los navegadores ahora ofrecen motores extremadamente optimizados que permiten ejecutar código JavaScript de manera rápida, incluso en los dispositivos de gama baja. Las APIs HTML se han hecho más completas, principalmente con la llegada de HTML 5 que añade muchas cosas (almacenamiento en el navegador, animaciones CSS 3, etc.). Esto permite proporcionar muchas más funcionalidades.
Las herramientas también han cambiado. Desde que JavaScript se convirtió en un lenguaje predominante (antes solo se usaba poco), han aparecido muchos frameworks e IDEs, con el objetivo de proporcionar una mejor experiencia de desarrollo. Node.js se creó en 2009 y permite ejecutar código JavaScript fuera de un navegador. Rápidamente se convirtió...
Angular
Angular es un framework que permite crear aplicaciones web cliente. Más que un framework, Angular se presenta como una plataforma de desarrollo que permiten crear aplicaciones web y móviles.
Hoy, la versión de Angular es la 8. Este libro inicialmente se escribió para Angular 4 y se ha revisado para Angular 8, algunas semanas después de su salida. Los objetivos de este libro se basan en esta versión, y para las versiones siguientes se podrían producir algunos cambios.
Este framework se basa en varios principios que se presentan en las siguientes secciones.
1. Organización por componentes
La organización de una aplicación Angular se hace por componentes. Un componente se corresponde con un elemento reutilizable, independiente y responsable de una única acción de negocio.
De esta manera, una aplicación se construye uniendo un conjunto de componentes. Esto permite una mejor organización, una mejor capacidad de prueba y por lo tanto, una mejor mantenibilidad.
2. TypeScript
Aunque es posible desarrollar su aplicación usando solo JavaScript, Angular se escribe en TypeScript y se aconseja hacer su desarrollo de aplicaciones también en TypeScript.
Este lenguaje, desarrollado por Microsoft, open source y transcompilado en JavaScript, aporta el tipado y una fase de compilación al desarrollo front. Estos dos elementos garantizan una mejor estabilidad...
AngularJS vs Angular
AngularJS es un framework web creado en 2009.
En aquel momento, el desarrollo web era totalmente diferente de lo que conocemos hoy. Las APIs HTML 5 estaban en proceso de especificaciones (que terminó en 2014), Node.js acababa de sacar una primera release y no era tan popular ni estaba tan implantada como hoy, etc. A nivel arquitectura, los sitios web eran mayoritariamente renderizados solo en el lado del servidor. En el lado cliente, para dinamizar las páginas, se usaban librerías como jQuery.
AngularJS ha revolucionado el desarrollo de los sitios web. Este framework ha añadido todas las piezas técnicas necesarias para el desarrollo de aplicaciones que se ejecutan totalmente en el lado del cliente: Templating, binding, navegación sin refresco del navegador, etc. Pero este framework ya no se optimiza para la Web actual y no se aprovecha de las diferentes posibilidades añadidas estos últimos años.
Entonces surgió la pregunta de las nuevas versiones de AngularJS. El equipo de Google decidió partir de una hoja en blanco, con el objetivo de desarrollar un nuevo framework adaptado a las nuevas especificaciones de la Web, sin tener que pagar el precio del mantenimiento y la compatibilidad hacia atrás.
Migrar una aplicación AngularJS a Angular
Inicialmente, el equipo de Google no había previsto proporcionar un camino de migración de una aplicación AngularJS...