SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
@carlosazaustre
+CarlosAzaustre
Curso de AngularJSCurso de AngularJS
Curso de AngularJS @carlosazaustre
Sobre Mi
Carlos Azaustre
Ingeniero en Telemática
CTO y Cofundador en Chefly
Formador Web / Blogger
Mentor en NodeSchool Madrid
Autor de
Desarrollo web ágil con Angular.js
Me puedes leer en
http://carlosazaustre.es
Curso de AngularJS @carlosazaustre
Temario
1. Introducción a AngularJS
2. Conceptos claves de AngularJS
3. Configuración básica de una App
4. Uso de formularios
5. Rutas con ngRoute
6. Directivas
7. Estructura de archivos
8. Aplicación de Ejemplo
9. Servicios para acceder a un API REST
10. Preparación para Despliegue en Producción
Curso de AngularJS @carlosazaustre
Agenda
10h - 14h
Presentación
Conceptos Clave
Ejemplo
14h - 15h
Pausa para comer
15h - 18h
Formularios
Rutas
Estructura
Servicios
Día 14 Día 15
10h - 14h
Herramientas (GulpJS)
Entorno de Desarrollo
Enunciado del Ejemplo
14h - 15h
Pausa para comer
15h -18h
Desarrollo del Ejemplo
Preguntas y Dudas
Día 16
10h - 14h
Desarrollo del Ejemplo
Preguntas y Dudas
Revisión temas
Curso de AngularJS @carlosazaustre
¿Qué es AngularJS?
Framework MVC desarrollado por Google para el Frontend
Objetivo: Ser modular y tener una estructura de archivos
Ideal para hacer aplicaciones web con mucho consumo de datos, editado, borrado,
etc.. Aplicaciones CRUD (Create, Read, Update, Delete)
No es bueno para sitios de contenido que se quiera posicionar (SEO, Blogs,
Websites, etc..)
JavaScript renderiza las páginas en el cliente, por lo que los rastreadores de Google
no pueden indexar ese contenido.
Curso de AngularJS @carlosazaustre
¿Qué es AngularJS?
Versiones
1.x y 1.2.x - Deprecadas
1.3.x - Versión estable Actual. No da soporte a IE8 e inferiores
1.4.x - En Beta.
2.0 - Versión en Desarrollo. Cambia completamente.
Utiliza ECMAScript6 y WebComponents
1.5.x - Futuras versiones para hacer el tránsito a la 2.0 más cómodo.
1.6.x
Curso de AngularJS @carlosazaustre
¿Qué es AngularJS?
Aplicación Cliente Servidor
HTML
AJAX
JSON
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Modelo
Vista Controlador
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Two-Way Data Binding
<input type=”text” ng-model=”tuNombre”>
<h1>Hello {{tuNombre}}!</h1>
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Inyección de dependencias
angular
.module(‘myApp’, [‘ngRoute’])
.config(config);
function config($routeProvider) {
...
}
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Directivas
<html ng-app>
<html data-ng-app>
<html ng-app=””>
<html ng-app=”myApp”>
ng-hide
ng-href
ng-src
ng-submit
ng-controller
ng-repeat
ng-model
ng-show
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Controladores
<body ng-app=”myApp”>
<div ng-controller=”TituloController”>
<h1>{{titulo}}</h1>
</div>
<script>
var texto = “Esto es el título”;
function TituloController($scope) {
$scope.titulo = texto;
}
</script>
</body>
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Módulos
Módulo (Module)
Config Filter Directive Factory
Service
Provider
Value
Controller
Routes
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Módulos
var miModulo = angular.module(“miModulo”, []);
<html ng-app=”miModulo”>
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Ejemplo
[{
“nombre”: “Sillas”,
“cantidad”: 10,
“precio”: 25
},
{
“nombre”: “Mesas”,
“cantidad”: 3,
“precio”: 75
}]
Modelo
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Ejemplo
<body ng-app=”appInventario”>
<h1>Listado de Productos</h1>
<ul ng-controller=”ListadoController”>
<li ng-repeat=”producto in productos”>
<span>Nombre: {{ producto.nombre }}</span><br/>
<span>Cantidad: {{ producto.cantidad }}</span><br/>
<span>Precio: {{ producto.precio }}</span>
</li>
</ul>
</body>
Vista
Curso de AngularJS @carlosazaustre
Conceptos claves de AngularJS
Ejemplo
angular
.module(‘appInventario’, [])
.controller(‘ListaController’, ListaController);
function ListaController($scope, $http) {
$http
.get(“inventario.json”)
.success(function(data) {
$scope.productos = data;
});
}
Controlador
Curso de AngularJS @carlosazaustre
Formularios
<div ng-controller=”FormController”>
<form ng-submit=”guardar()”>
Nombre: <input type=”text” ng-model=”usuario.nombre” />
Email: <input type=”text” ng-model=”usuario.email” />
Contraseña: <input type=”password” ng-model=”usuario.pass” />
<button ng-click=”deshacer()”>Deshacer</button>
<input type=”submit” value=”Guardar” />
</form>
</div>
Curso de AngularJS @carlosazaustre
Formularios
angular
.module(“myApp”, [])
.controller(“FormController”, FormController);
function FormController($scope, $http) {
$scope.deshacer = function() {
$scope.usuario = {};
};
$scope.guardar = function() {
$http
.post(“http://servidor.com/usuarios”, $scope.usuario)
.success(function() {
console.log(“Usuario guardado”);
})
};
}
Curso de AngularJS @carlosazaustre
Rutas (ngRoute)
<body ng-app=”myApp”>
<div ng-view>
</div>
</body>
<script src=”angular.js”></script>
<script src=”angular-route.js”></script>
angular
.module(“myApp”, [“ngRoute”])
function config($routeProvider) {
. . .
}
Curso de AngularJS @carlosazaustre
Rutas (ngRoute)
function config($routeProvider) {
$routeProvider
.when(“/”, {
templateUrl: “ruta/plantilla.html”,
controller: “NombreController”,
controllerAs: “nombre”
})
.when(“/usuario/:usuarioID”, {
templateUrl: “ruta/otra-plantilla.html”,
controller: “OtroController”,
controllerAs: “otro”
})
.otherwise({
redirectTo: “/”
});
}
Curso de AngularJS @carlosazaustre
Creación de Directivas
angular
.module(“myApp”, [])
.directive(“miDirectiva”, miDirectiva);
function miDirectiva() {
return {
restrict: ‘E’,
replace: true,
templateUrl: ‘ruta/mi-directiva.html’
}
}
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
<mi-directiva>
</mi-directiva>
Curso de AngularJS @carlosazaustre
Directivas Complejas
Curso de AngularJS @carlosazaustre
Directivas Complejas
Curso de AngularJS @carlosazaustre
Directivas Complejas
Curso de AngularJS @carlosazaustre
Directivas Complejas
Curso de AngularJS @carlosazaustre
Directivas Complejas
Curso de AngularJS @carlosazaustre
Servicios para acceder a datos
angular
.module(“myApp”, [])
.factory(“dataService”, dataService);
function dataService($http) {
return {
getListado: getListado
};
function getListado() {
return $http
.get(“http://servicio.com/listado”)
.then(getListadoComplete)
.catch(getListadoError);
function getListadoComplete(response) {
return response.data.results;
}
function getListadoError(error) { … };
}
}
Curso de AngularJS @carlosazaustre
Servicios para acceder a datos (usando ngResource)
angular
.module(“myApp”, [“ngResource”])
.factory(“dataService”, dataService);
function dataService($resource) {
return $resource(“http://servidor.com/recursos/”, {
recursoId: “@id”
});
}
{
“get”: {method: “GET”},
“save”: {method: “POST”},
“query”: {method: “GET”, isArray:true},
“remove”: {method: “DELETE”},
“delete”: {method: “DELETE”}
};
Curso de AngularJS @carlosazaustre
Estructura de Archivos y Carpetas
- app/
- assets/ (Imágenes, Videos, Ficheros,...)
- js/
- app.js
- controllers.js
- services.js
- views/ (Plantillas HTML)
Organización por tipo
Curso de AngularJS @carlosazaustre
Estructura de Archivos y Carpetas
- app/
- app.module.js
- app.config.js
- components/
- perfil-usuario.directive.js
- perfil-usuario.directive.html
- calendario.directive.js
- calendario.directive.html
- articulos/
- articulos.routes.js
- articulos.html
- articulos.controller.js
- articulo-detalle.html
- articulo-detalle.js
- usuarios/
- usuarios.routes.js
- usuarios.html
- usuarios.controller.js
Organización por funcionalidad
Curso de AngularJS @carlosazaustre
Entorno de trabajo
Instalar Node.js
https://nodejs.org/download/
Instalar GulpJS
Automatizador de tareas
npm install -g gulp
Instalar Bower
Gestor de dependencias para Frontend
npm install -g bower
Curso de AngularJS @carlosazaustre
Aplicación de ejemplo
Aplicación web SPA
Listado de empleados con fichas de cada uno y
enlaces con las personas a cargo
bit.ly/vector-angular

Más contenido relacionado

La actualidad más candente

AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)Nacho García Fernández
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJSOscar Gensollen
 
Taller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaTaller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaOpenExpoES
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJSLuis Natividad
 
Angular.js
Angular.jsAngular.js
Angular.jsGDG Cali
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders ValenciaJavier Ruiz
 
Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Carlos Azaustre
 
Curso de Responsive Design
Curso de Responsive DesignCurso de Responsive Design
Curso de Responsive DesignCarlos Azaustre
 
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015José Manuel García García
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsVisual Engineering
 

La actualidad más candente (20)

Por qué AngularJS
Por qué AngularJSPor qué AngularJS
Por qué AngularJS
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
Introduccion a AngularJS
Introduccion a AngularJSIntroduccion a AngularJS
Introduccion a AngularJS
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Taller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfectaTaller de Angular JS: La solución tecnológica perfecta
Taller de Angular JS: La solución tecnológica perfecta
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
Angular js in mobile
Angular js in mobileAngular js in mobile
Angular js in mobile
 
Angularjs
AngularjsAngularjs
Angularjs
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Angular.js
Angular.jsAngular.js
Angular.js
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders Valencia
 
Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015Angular 2 is Coming - GDG DevFest Cordoba 2015
Angular 2 is Coming - GDG DevFest Cordoba 2015
 
Curso de Responsive Design
Curso de Responsive DesignCurso de Responsive Design
Curso de Responsive Design
 
Advanced angular 1
Advanced angular 1Advanced angular 1
Advanced angular 1
 
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
Integrando AngularJS y drupal
Integrando AngularJS y drupalIntegrando AngularJS y drupal
Integrando AngularJS y drupal
 

Similar a Curso Básico de AngularJS

Similar a Curso Básico de AngularJS (20)

Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
Cursos web
Cursos webCursos web
Cursos web
 
Proyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidorProyecto Avatar - JavaScript sobre la JVM del servidor
Proyecto Avatar - JavaScript sobre la JVM del servidor
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Ionic, Adaptación de desarrollos web a dispositivos móviles
Ionic, Adaptación de desarrollos web a dispositivos móvilesIonic, Adaptación de desarrollos web a dispositivos móviles
Ionic, Adaptación de desarrollos web a dispositivos móviles
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
myprofly
myproflymyprofly
myprofly
 
Servicios web
Servicios webServicios web
Servicios web
 
ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 

Más de Carlos Azaustre

Introducción al JAMStack - JS Ourense
Introducción al JAMStack - JS OurenseIntroducción al JAMStack - JS Ourense
Introducción al JAMStack - JS OurenseCarlos Azaustre
 
Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos Carlos Azaustre
 
Your First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + FirebaseYour First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + FirebaseCarlos Azaustre
 
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIsPixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIsCarlos Azaustre
 
Prototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGiversPrototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGiversCarlos Azaustre
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Carlos Azaustre
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonCarlos Azaustre
 
Taller de Seo y Facebook Ads
Taller de Seo y Facebook AdsTaller de Seo y Facebook Ads
Taller de Seo y Facebook AdsCarlos Azaustre
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCCarlos Azaustre
 
#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScriptCarlos Azaustre
 
Chefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup SchoolChefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup SchoolCarlos Azaustre
 
Nuestra experiencia emprendedora
Nuestra experiencia emprendedoraNuestra experiencia emprendedora
Nuestra experiencia emprendedoraCarlos Azaustre
 

Más de Carlos Azaustre (13)

Introducción al JAMStack - JS Ourense
Introducción al JAMStack - JS OurenseIntroducción al JAMStack - JS Ourense
Introducción al JAMStack - JS Ourense
 
Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos Serverless with Firebase - Launchpad Build Burgos
Serverless with Firebase - Launchpad Build Burgos
 
Your First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + FirebaseYour First Assistant App with DialogFlow + Firebase
Your First Assistant App with DialogFlow + Firebase
 
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIsPixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
PixelsCamp 2017 - Cloud Functions for Firebase and Machine Learning APIs
 
Prototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGiversPrototipado de Aplicaciones web con Firebase #CampusGivers
Prototipado de Aplicaciones web con Firebase #CampusGivers
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Taller de Seo y Facebook Ads
Taller de Seo y Facebook AdsTaller de Seo y Facebook Ads
Taller de Seo y Facebook Ads
 
Game of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCCGame of Frameworks - GDG Cáceres #CodeCC
Game of Frameworks - GDG Cáceres #CodeCC
 
Chefly Keynote at ETSII
Chefly Keynote at ETSIIChefly Keynote at ETSII
Chefly Keynote at ETSII
 
#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript
 
Chefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup SchoolChefly: Pitch for Tetuan Valley Startup School
Chefly: Pitch for Tetuan Valley Startup School
 
Nuestra experiencia emprendedora
Nuestra experiencia emprendedoraNuestra experiencia emprendedora
Nuestra experiencia emprendedora
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Último (19)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 

Curso Básico de AngularJS

  • 2. Curso de AngularJS @carlosazaustre Sobre Mi Carlos Azaustre Ingeniero en Telemática CTO y Cofundador en Chefly Formador Web / Blogger Mentor en NodeSchool Madrid Autor de Desarrollo web ágil con Angular.js Me puedes leer en http://carlosazaustre.es
  • 3. Curso de AngularJS @carlosazaustre Temario 1. Introducción a AngularJS 2. Conceptos claves de AngularJS 3. Configuración básica de una App 4. Uso de formularios 5. Rutas con ngRoute 6. Directivas 7. Estructura de archivos 8. Aplicación de Ejemplo 9. Servicios para acceder a un API REST 10. Preparación para Despliegue en Producción
  • 4. Curso de AngularJS @carlosazaustre Agenda 10h - 14h Presentación Conceptos Clave Ejemplo 14h - 15h Pausa para comer 15h - 18h Formularios Rutas Estructura Servicios Día 14 Día 15 10h - 14h Herramientas (GulpJS) Entorno de Desarrollo Enunciado del Ejemplo 14h - 15h Pausa para comer 15h -18h Desarrollo del Ejemplo Preguntas y Dudas Día 16 10h - 14h Desarrollo del Ejemplo Preguntas y Dudas Revisión temas
  • 5. Curso de AngularJS @carlosazaustre ¿Qué es AngularJS? Framework MVC desarrollado por Google para el Frontend Objetivo: Ser modular y tener una estructura de archivos Ideal para hacer aplicaciones web con mucho consumo de datos, editado, borrado, etc.. Aplicaciones CRUD (Create, Read, Update, Delete) No es bueno para sitios de contenido que se quiera posicionar (SEO, Blogs, Websites, etc..) JavaScript renderiza las páginas en el cliente, por lo que los rastreadores de Google no pueden indexar ese contenido.
  • 6. Curso de AngularJS @carlosazaustre ¿Qué es AngularJS? Versiones 1.x y 1.2.x - Deprecadas 1.3.x - Versión estable Actual. No da soporte a IE8 e inferiores 1.4.x - En Beta. 2.0 - Versión en Desarrollo. Cambia completamente. Utiliza ECMAScript6 y WebComponents 1.5.x - Futuras versiones para hacer el tránsito a la 2.0 más cómodo. 1.6.x
  • 7. Curso de AngularJS @carlosazaustre ¿Qué es AngularJS? Aplicación Cliente Servidor HTML AJAX JSON
  • 8. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Modelo Vista Controlador
  • 9. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Two-Way Data Binding <input type=”text” ng-model=”tuNombre”> <h1>Hello {{tuNombre}}!</h1>
  • 10. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Inyección de dependencias angular .module(‘myApp’, [‘ngRoute’]) .config(config); function config($routeProvider) { ... }
  • 11. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Directivas <html ng-app> <html data-ng-app> <html ng-app=””> <html ng-app=”myApp”> ng-hide ng-href ng-src ng-submit ng-controller ng-repeat ng-model ng-show
  • 12. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Controladores <body ng-app=”myApp”> <div ng-controller=”TituloController”> <h1>{{titulo}}</h1> </div> <script> var texto = “Esto es el título”; function TituloController($scope) { $scope.titulo = texto; } </script> </body>
  • 13. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Módulos Módulo (Module) Config Filter Directive Factory Service Provider Value Controller Routes
  • 14. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Módulos var miModulo = angular.module(“miModulo”, []); <html ng-app=”miModulo”>
  • 15. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Ejemplo [{ “nombre”: “Sillas”, “cantidad”: 10, “precio”: 25 }, { “nombre”: “Mesas”, “cantidad”: 3, “precio”: 75 }] Modelo
  • 16. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Ejemplo <body ng-app=”appInventario”> <h1>Listado de Productos</h1> <ul ng-controller=”ListadoController”> <li ng-repeat=”producto in productos”> <span>Nombre: {{ producto.nombre }}</span><br/> <span>Cantidad: {{ producto.cantidad }}</span><br/> <span>Precio: {{ producto.precio }}</span> </li> </ul> </body> Vista
  • 17. Curso de AngularJS @carlosazaustre Conceptos claves de AngularJS Ejemplo angular .module(‘appInventario’, []) .controller(‘ListaController’, ListaController); function ListaController($scope, $http) { $http .get(“inventario.json”) .success(function(data) { $scope.productos = data; }); } Controlador
  • 18. Curso de AngularJS @carlosazaustre Formularios <div ng-controller=”FormController”> <form ng-submit=”guardar()”> Nombre: <input type=”text” ng-model=”usuario.nombre” /> Email: <input type=”text” ng-model=”usuario.email” /> Contraseña: <input type=”password” ng-model=”usuario.pass” /> <button ng-click=”deshacer()”>Deshacer</button> <input type=”submit” value=”Guardar” /> </form> </div>
  • 19. Curso de AngularJS @carlosazaustre Formularios angular .module(“myApp”, []) .controller(“FormController”, FormController); function FormController($scope, $http) { $scope.deshacer = function() { $scope.usuario = {}; }; $scope.guardar = function() { $http .post(“http://servidor.com/usuarios”, $scope.usuario) .success(function() { console.log(“Usuario guardado”); }) }; }
  • 20. Curso de AngularJS @carlosazaustre Rutas (ngRoute) <body ng-app=”myApp”> <div ng-view> </div> </body> <script src=”angular.js”></script> <script src=”angular-route.js”></script> angular .module(“myApp”, [“ngRoute”]) function config($routeProvider) { . . . }
  • 21. Curso de AngularJS @carlosazaustre Rutas (ngRoute) function config($routeProvider) { $routeProvider .when(“/”, { templateUrl: “ruta/plantilla.html”, controller: “NombreController”, controllerAs: “nombre” }) .when(“/usuario/:usuarioID”, { templateUrl: “ruta/otra-plantilla.html”, controller: “OtroController”, controllerAs: “otro” }) .otherwise({ redirectTo: “/” }); }
  • 22. Curso de AngularJS @carlosazaustre Creación de Directivas angular .module(“myApp”, []) .directive(“miDirectiva”, miDirectiva); function miDirectiva() { return { restrict: ‘E’, replace: true, templateUrl: ‘ruta/mi-directiva.html’ } } <ul> <li>Elemento 1</li> <li>Elemento 2</li> <li>Elemento 3</li> </ul> <mi-directiva> </mi-directiva>
  • 23. Curso de AngularJS @carlosazaustre Directivas Complejas
  • 24. Curso de AngularJS @carlosazaustre Directivas Complejas
  • 25. Curso de AngularJS @carlosazaustre Directivas Complejas
  • 26. Curso de AngularJS @carlosazaustre Directivas Complejas
  • 27. Curso de AngularJS @carlosazaustre Directivas Complejas
  • 28. Curso de AngularJS @carlosazaustre Servicios para acceder a datos angular .module(“myApp”, []) .factory(“dataService”, dataService); function dataService($http) { return { getListado: getListado }; function getListado() { return $http .get(“http://servicio.com/listado”) .then(getListadoComplete) .catch(getListadoError); function getListadoComplete(response) { return response.data.results; } function getListadoError(error) { … }; } }
  • 29. Curso de AngularJS @carlosazaustre Servicios para acceder a datos (usando ngResource) angular .module(“myApp”, [“ngResource”]) .factory(“dataService”, dataService); function dataService($resource) { return $resource(“http://servidor.com/recursos/”, { recursoId: “@id” }); } { “get”: {method: “GET”}, “save”: {method: “POST”}, “query”: {method: “GET”, isArray:true}, “remove”: {method: “DELETE”}, “delete”: {method: “DELETE”} };
  • 30. Curso de AngularJS @carlosazaustre Estructura de Archivos y Carpetas - app/ - assets/ (Imágenes, Videos, Ficheros,...) - js/ - app.js - controllers.js - services.js - views/ (Plantillas HTML) Organización por tipo
  • 31. Curso de AngularJS @carlosazaustre Estructura de Archivos y Carpetas - app/ - app.module.js - app.config.js - components/ - perfil-usuario.directive.js - perfil-usuario.directive.html - calendario.directive.js - calendario.directive.html - articulos/ - articulos.routes.js - articulos.html - articulos.controller.js - articulo-detalle.html - articulo-detalle.js - usuarios/ - usuarios.routes.js - usuarios.html - usuarios.controller.js Organización por funcionalidad
  • 32. Curso de AngularJS @carlosazaustre Entorno de trabajo Instalar Node.js https://nodejs.org/download/ Instalar GulpJS Automatizador de tareas npm install -g gulp Instalar Bower Gestor de dependencias para Frontend npm install -g bower
  • 33. Curso de AngularJS @carlosazaustre Aplicación de ejemplo Aplicación web SPA Listado de empleados con fichas de cada uno y enlaces con las personas a cargo bit.ly/vector-angular