# Taller: Desarrollo con Angular e Ionic ## Capítulo 1: Introducción a Angular e Ionic ## 1. ¿Qué es Angular? Angular es un framework de desarrollo front-end mantenido por Google, diseñado para crear aplicaciones web de una sola página (SPA) y aplicaciones móviles. Algunas características clave: - **Basado en componentes**: Toda la interfaz se construye mediante componentes reutilizables - **TypeScript**: Utiliza TypeScript como lenguaje principal, añadiendo tipos estáticos a JavaScript - **Completo**: Ofrece soluciones integradas para enrutamiento, formularios, HTTP, animaciones, etc. - **Modular**: Su arquitectura permite dividir la aplicación en módulos funcionales - **Reactivo**: Facilita la programación reactiva mediante RxJS Angular utiliza un sistema de "detección de cambios" para mantener sincronizada la interfaz de usuario con el estado de la aplicación, lo que permite crear interfaces dinámicas y reactivas. ## 2. Angular CLI: La Herramienta de Línea de Comandos El Angular CLI (Command Line Interface) es una herramienta oficial que simplifica enormemente el desarrollo con Angular: ```bash # Instalación global npm install -g @angular/cli # Crear nuevo proyecto ng new mi-proyecto # Generar componentes, servicios, etc. ng generate component mi-componente ng generate service mi-servicio # Iniciar servidor de desarrollo ng serve # Construir para producción ng build --prod ``` Beneficios del CLI: - **Scaffolding**: Generación de código con estructura y configuración correctas - **Herramientas de desarrollo**: Servidor local con recarga en vivo (live reload) - **Optimización**: Empaquetado y minificación para producción - **Testing**: Configuración automática para pruebas unitarias e integración - **Actualización**: Facilita la actualización entre versiones de Angular ## 3. Angular vs Desarrollo Web Tradicional Angular se asemeja al desarrollo de páginas web normales, pero con una estructura y enfoque diferentes: | Desarrollo Web Tradicional | Desarrollo con Angular | |---------------------------|------------------------| | Páginas HTML separadas | Aplicación de una sola página (SPA) | | jQuery para manipular DOM | Vinculación de datos bidireccional | | JavaScript vanilla | TypeScript con tipos estáticos | | Recarga completa entre páginas | Navegación sin recarga (enrutamiento SPA) | | Mezcla de lógica y presentación | Separación modelo-vista-controlador | | Scripts y estilos globales | Encapsulación de componentes | A pesar de las diferencias, los conocimientos de HTML, CSS y JavaScript son totalmente aplicables en Angular, ya que seguimos trabajando con estos lenguajes fundamentales pero de manera estructurada. ## 4. Componentes Básicos de Angular #### Componentes El elemento fundamental de las aplicaciones Angular: ```typescript import { Component } from '@angular/core'; @Component({ selector: 'app-contador', template: `

Contador: {{ contador }}

`, styles: [` div { text-align: center; } button { margin: 0 5px; } `] }) export class ContadorComponent { contador = 0; incrementar() { this.contador++; } decrementar() { this.contador--; } } ``` #### Módulos Organizan la aplicación en bloques funcionales: ```typescript import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { ContadorComponent } from './contador/contador.component'; @NgModule({ declarations: [ AppComponent, ContadorComponent ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } ``` #### Servicios Encapsulan la lógica de negocio y son inyectables en componentes: ```typescript import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class DatosService { private datos = ['Primer elemento', 'Segundo elemento']; getDatos() { return this.datos; } agregarDato(dato: string) { this.datos.push(dato); } } ``` #### Directivas Modifican el comportamiento del DOM: ```html
Este contenido es condicional

Texto con estilo dinámico

``` #### Pipes Transforman datos para su visualización: ```html

{{ fecha | date:'dd/MM/yyyy' }}

{{ precio | currency:'EUR' }}

{{ nombre | uppercase }}

{{ textoLargo | slice:0:50 }}...

``` ## 5. ¿Qué es Ionic? Ionic es un framework de desarrollo de aplicaciones móviles híbridas que se construye sobre Angular: - **Multiplataforma**: Una única base de código para iOS, Android y web - **Componentes nativos**: UI con apariencia y comportamiento nativo - **Capacitor/Cordova**: Acceso a APIs nativas del dispositivo - **Rendimiento optimizado**: Aplicaciones rápidas y responsivas ## 6. Componentes UI de Ionic Ionic ofrece una amplia biblioteca de componentes que siguen las directrices de diseño de iOS y Android: #### Navegación y Estructura ```html Inicio Buscar Perfil Menú Inicio Perfil Configuración ``` > **Nota:** Para ver ejemplos interactivos de estos componentes, visite la documentación oficial: > - [Ionic Tabs](https://ionicframework.com/docs/api/tabs) > - [Ionic Menu](https://ionicframework.com/docs/api/menu) #### Componentes Básicos ```html Botón Estándar Botón Outline Botón Block Subtítulo Título Principal Contenido detallado de la tarjeta que puede incluir texto, imágenes y otros elementos. Usuarios

Juan Pérez

Desarrollador

María García

Diseñadora

``` > **Nota:** Puede visualizar estos componentes en la documentación oficial: > - [Ionic Buttons](https://ionicframework.com/docs/api/button) > - [Ionic Cards](https://ionicframework.com/docs/api/card) > - [Ionic Lists](https://ionicframework.com/docs/api/list) #### Formularios y Entrada ```html Nombre Email Categoría Deportes Música Tecnología Notificaciones Acepto términos ``` > **Nota:** Consulte la documentación oficial para ver ejemplos interactivos: > - [Ionic Input](https://ionicframework.com/docs/api/input) > - [Ionic Select](https://ionicframework.com/docs/api/select) > - [Ionic Toggle](https://ionicframework.com/docs/api/toggle) > - [Ionic Checkbox](https://ionicframework.com/docs/api/checkbox) #### Feedback y Alertas ```typescript import { AlertController, ToastController, LoadingController } from '@ionic/angular'; constructor( private alertCtrl: AlertController, private toastCtrl: ToastController, private loadingCtrl: LoadingController ) {} async mostrarAlerta() { const alert = await this.alertCtrl.create({ header: 'Alerta', subHeader: 'Información importante', message: '¿Estás seguro de realizar esta acción?', buttons: ['Cancelar', 'Aceptar'] }); await alert.present(); } async mostrarToast() { const toast = await this.toastCtrl.create({ message: 'Operación completada con éxito', duration: 2000, position: 'bottom', color: 'success' }); toast.present(); } async mostrarCargando() { const loading = await this.loadingCtrl.create({ message: 'Cargando datos...', duration: 2000 }); await loading.present(); } ``` > **Nota:** Para más información sobre alertas y elementos interactivos, consulte: > - [Ionic Alert](https://ionicframework.com/docs/api/alert) > - [Ionic Toast](https://ionicframework.com/docs/api/toast) > - [Ionic Loading](https://ionicframework.com/docs/api/loading) ## 7. Capacitor: El Puente Nativo Capacitor es el framework que permite a Ionic acceder a las capacidades nativas del dispositivo: - Cámara y galería de fotos - Geolocalización - Almacenamiento persistente - Notificaciones push - Sensores del dispositivo - Archivos y sistema de archivos Ejemplo básico de uso de Capacitor: ```typescript import { Camera, CameraResultType } from '@capacitor/camera'; async function tomarFoto() { const imagen = await Camera.getPhoto({ quality: 90, allowEditing: true, resultType: CameraResultType.Uri }); // Usar la imagen (imagen.webPath) const imagenUrl = imagen.webPath; } ``` ## 8. Ciclo de Desarrollo con Ionic y Angular El proceso típico de desarrollo con Ionic y Angular incluye: 1. **Creación del proyecto**: ```bash # Crear un nuevo proyecto (por defecto usa Angular) ionic start mi-proyecto-ionic # Especificar el framework (angular, react, vue) ionic start mi-proyecto-ionic --type=angular ``` 2. **Desarrollo en navegador web**: ```bash # Iniciar servidor de desarrollo con recarga en vivo ionic serve ``` 3. **Pruebas en dispositivo real**: ```bash # Añadir plataforma Android ionic capacitor add android # Ejecutar en dispositivo con recarga en vivo ionic capacitor run android --livereload ``` 4. **Compilación para producción**: ```bash # Construir la aplicación optimizada ionic build --prod # Copiar los archivos a las plataformas nativas npx cap copy # Abrir el proyecto en Android Studio para ajustes finales npx cap open android ``` ## Resumen Angular e Ionic forman una poderosa combinación para desarrollar aplicaciones móviles multiplataforma: - Angular proporciona la estructura, organización y lógica - Ionic aporta componentes UI con aspecto nativo - Capacitor permite acceder a características nativas del dispositivo - El desarrollo es similar al web tradicional, pero más estructurado y optimizado En los siguientes capítulos, exploraremos más a fondo cada uno de estos conceptos y construiremos paso a paso una aplicación completa de reservas para un gimnasio, además de la creación básica de un proyecto vacío. ## Recursos y Documentación - [Documentación oficial de Angular](https://angular.io/docs) - [Documentación de Ionic Framework](https://ionicframework.com/docs) - [Capacitor Docs](https://capacitorjs.com/docs) - [Angular CLI](https://cli.angular.io/) - [TypeScript](https://www.typescriptlang.org/docs/)