-
Notifications
You must be signed in to change notification settings - Fork 12
Motivación
En los últimos años se está tendiendo a una aproximación al desarrollo web en el que la parte de la vista se libera completamente del código servidor. Así el backend tiene una API bien definida, normalmente REST y el frontend es código HTML, JavaScript y CSS que se comunica con el backend a través de peticiones AJAX.
Esta arquitectura obliga a una separación real de la capa de vista del proyecto lo que nos aporta importantes ventajas como:
-
Es más fácil cambiar la parte con la que interactúa el usuario: cambiar estilos, cambiar el tipo de controles, convertir una pantalla compleja en un wizard, etc. Ya que se puede hacer completamente desde el proyecto frontend aprovechando el API REST ya existente.
-
Las tecnologías de la parte servidor y cliente son distintas y las responsabilidades claras lo que permite que equipos distintos trabajen en paralelo en ambas.
-
Permite realizar varios clientes, por ejemplo uno web y una aplicación IOS aprovechando el mismo API REST.
-
El servidor puede ser más ligero ya que el renderizado de la pantalla final se delega al navegador del usuario.
-
Permite realizar aplicaciones más ricas en interactividad ya que podemos evitar refrescos de pantalla mediante uso de AJAX e incluso realizar SPA (Single Page Aplications).
-
Y un largo etcétera.
Sin embargo mover parte de la complejidad que antes gestionábamos en el servidor a un proyecto de cliente tiene un peligro: La tecnología de servidor nos permite asegurar cierta calidad del código, tenemos IDES robustos, procesos de compilado, tipado estricto, frameworks de test, procesos de empaquetado, gestión de dependencias y un largo etcétera de facilidades que no están típicamente disponibles en JavaScript.
Por suerte Angular.js está diseñado desde el principio para que pueda ser testado fácilmente. Así todas las dependencias se inyectan en todos los casos y el código que manipula el DOM está separado del código de nuestros controladores.
Además su ecosistema nos va a aportar todas las herramientas necesarias para conseguir un proyecto de calidad. Tenemos angular scenarios que nos aporta un DSL para realizar test de integración, Karma y PhantomJS para ejecutar los tests, Bower para gestionar dependencias, Grunt para realizar el empaquetado, Yeoman para generar la estructura de proyecto, etc.
Este curso va a tratar de cómo aprovechar estas herramientas y otras para permitirnos realizar proyectos de tamaño medio y grande con Angular.js controlando la complejidad y asegurándonos cierto nivel de calidad.