SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Angular	
  JS	
  in	
  Mobile	
  Devices	
  
@sergicontre	
  
Sobre	
  mi	
  
•  So5ware	
  Mobile	
  Developer	
  	
  
	
  
@sergicontre	
  
h9ps://github.com/sergicontre	
  
h9p://plnkr.co/users/sergicontre	
  
Angular	
  JS	
  
•  Es	
  un	
  framework	
  ‘Model-­‐View-­‐Whatever’	
  
•  100%	
  Javascript	
  
•  Constante	
  crecimiento	
  
– Primera	
  Release	
  Octubre	
  de	
  2010	
  (versión	
  0.9.0)	
  
– Versión	
  actual:	
  1.2.16	
  /	
  1.3.0-­‐beta.7	
  
– Versión	
  2.0:	
  ¿?	
  
•  Soportada	
  por	
  los	
  navegadores	
  modernos.	
  
	
  
Angular	
  JS	
  -­‐	
  CaracterísYcas	
  
•  Data-­‐binding	
  bidireccional.	
  
–  Enlace	
  automáYco	
  para	
  actualizar	
  la	
  vista	
  cuando	
  el	
  
modelo	
  cambia,	
  ó	
  actualizar	
  el	
  modelo	
  cuando	
  la	
  vista	
  
cambia.	
  Evita	
  que	
  realices	
  la	
  manipulación	
  del	
  DOM.	
  
	
  
Demo:	
  h0p://embed.plnkr.co/ZcS3a4	
  
Angular	
  JS	
  -­‐	
  CaracterísYcas	
  
•  DirecYvas	
  
–  Es	
  una	
  marca	
  sobre	
  un	
  elemento	
  del	
  DOM	
  
•  Atributo	
  
•  Elemento	
  
•  CSS	
  
–  Permite	
  enlazar	
  un	
  comportamiento	
  específico	
  o	
  
transformación	
  del	
  elemento	
  DOM.	
  
	
  
Demo:	
  h0p://embed.plnkr.co/9WEytxN8wUsNxp973Zzg	
  
Angular	
  JS	
  -­‐	
  CaracterísYcas	
  
•  Controladores	
  
– Es	
  una	
  función	
  constructora	
  Javascript	
  que	
  
permite	
  instanciar	
  un	
  objeto	
  $scope,	
  que	
  servirá	
  
de	
  pegamento	
  con	
  la	
  vista	
  (HTML).	
  
	
  
Demo:	
  h0p://embed.plnkr.co/ZcS3a4	
  
Angular	
  JS	
  -­‐	
  CaracterísYcas	
  
•  Patrones	
  de	
  diseño	
  
– Inyección	
  de	
  dependencias.	
  
– Módulo.	
  
– Factoría.	
  
	
  
Angular	
  JS	
  -­‐	
  CaracterísYcas	
  
•  Facilita	
  realizar	
  tesYng.	
  
– Test	
  unitarios.	
  Demo:	
  h0p://embed.plnkr.co/gtp2jtGfmgoibd4cuFBr	
  
– End	
  to	
  End.	
  
	
  
“NUNCA	
  LO	
  OLVIDES….DOS	
  VECES	
  AL	
  DÍA!!”	
  	
  
Angular	
  JS	
  -­‐	
  Tendencia	
  
Angular	
  JS	
  
Backbone	
  JS	
  
Ember	
  JS	
  
Knockout	
  
Problemas	
  que	
  nos	
  plantea	
  un	
  
desarrollo	
  híbrido	
  
•  Fragmentación	
  del	
  Market.	
  
•  CaracterísYcas	
  especificas	
  de	
  cada	
  plataforma.	
  
•  Sensación	
  de	
  aplicación	
  naYva.	
  
•  UI	
  muy	
  bonitas	
  ==	
  mucho	
  CSS.	
  
•  CSS	
  es	
  una	
  parte	
  críYca	
  de	
  tu	
  App.	
  
•  ExpectaYvas	
  de	
  usuario	
  muy	
  altas.	
  
¿Por	
  qué	
  Angular	
  JS	
  	
  en	
  un	
  desarrollo	
  
híbrido?	
  
•  Javascript	
  con	
  soporte	
  cross	
  browser.	
  
•  Menos	
  código	
  =	
  menos	
  bugs.	
  
•  Menos	
  código	
  =	
  mejor	
  mantenimiento.	
  
•  Patrón	
  modulo,	
  encapsulado	
  del	
  código.	
  
•  Componentes	
  reusables	
  (direcYvas,	
  filtros…).	
  
•  Testeable.	
  (unit	
  tesYng,	
  e2e…)	
  
•  Comunidad.	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Angular	
  JS	
  uYliza	
  dirty	
  checking	
  para	
  actualizar	
  
sus	
  views	
  y	
  comprobar	
  si	
  un	
  valor	
  ha	
  
cambiado.	
  
•  $digest	
  loop,	
  $watch…	
  	
  
	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
Se	
  incluyen	
  2	
  $watch	
  en	
  la	
  lista	
  de	
  $watch	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
Se	
  incluyen	
  1	
  $watch	
  en	
  la	
  lista	
  de	
  $watch	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
Se	
  incluyen	
  (2*n)	
  +	
  1	
  $watch	
  en	
  la	
  lista	
  de	
  $watch	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  $digest	
  loop	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Dirty	
  checking	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Dirty	
  checking	
  
– Ocurre	
  un	
  evento	
  dentro	
  del	
  contexto	
  de	
  angular.	
  
– $digest	
  loop:	
  pregunta	
  a	
  cada	
  $watch	
  si	
  ha	
  
cambiado.	
  
– Si	
  algún	
  $watch	
  reporta	
  un	
  cambio,	
  vuelve	
  a	
  
lanzar	
  $digest	
  loop.	
  
– El	
  nuevo	
  $digest	
  loop	
  no	
  reporta	
  un	
  cambio.	
  
– Actualización	
  del	
  DOM	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Minimizar	
  el	
  tamaño	
  del	
  DOM.	
  
•  Pre	
  carga	
  templates	
  (grunt-­‐html2js)	
  
–  h9ps://github.com/karlgoldstein/grunt-­‐html2js	
  
•  Uso	
  FastClick.	
  	
  
–  h9p://5labs.github.io/fastclick/	
  
•  Prevenir	
  page-­‐zooming.	
  
•  Uso	
  librerias	
  JS/CSS	
  opYmizadas	
  para	
  móviles	
  
–  Ionic	
  Framework.	
  h9p://ionicframework.com/	
  
–  Demo:	
  h9p://embed.plnkr.co/N5BjFK	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Transiciones	
  entre	
  vistas	
  basadas	
  completamente	
  en	
  CSS	
  
•  Uso	
  de	
  3D	
  transforms.	
  
•  Listen	
  $routeChangeStart	
  para	
  actualizar	
  la	
  dirección	
  de	
  
transición	
  de	
  la	
  vista.	
  
•  Demo:	
  h9p://embed.plnkr.co/lrIay2	
  
	
  
	
  
Performance.	
  OpYmizaciones	
  en	
  
Angular	
  JS	
  
•  Minimizar	
  el	
  código	
  Angular	
  JS:	
  ngMin	
  
	
  
ngMin	
  
Módulos	
  mobile	
  friendly	
  
•  Bindonce:	
  enlaza	
  una	
  vez	
  y	
  despues	
  destruye	
  watchers	
  
innecesarios.	
  
•  Ejemplo:	
  en	
  listas	
  con	
  muchos	
  elementos	
  
Resultado:	
  1	
  watcher	
  en	
  lugar	
  de	
  1	
  +	
  (6*n)	
  
h0ps://github.com/Pasvaz/bindonce	
  
Módulos	
  mobile	
  friendly	
  
•  angular-­‐carousel:	
  permite	
  crear	
  un	
  carrusel	
  touch	
  a	
  
parYr	
  de	
  una	
  expresión	
  ng-­‐repeat.	
  
•  Usa	
  3D	
  transformaYon,	
  DOM-­‐buffering…	
  
h0ps://github.com/revolunet/angular-­‐carousel	
  
DEMO:	
  h0p://embed.plnkr.co/ULicic	
  	
  
Módulos	
  mobile	
  friendly	
  
•  angular-­‐snap:	
  permite	
  crear	
  menu	
  lateral	
  oculto	
  
con	
  soporte	
  swipe,	
  mulYple	
  drawers,	
  diferentes	
  
Ypos	
  de	
  transiciones	
  
h0ps://github.com/jtrussell/angular-­‐snap.js	
  
DEMO:	
  h0p://embed.plnkr.co/zKu1GXEqW4MxuwtN4GQT	
  	
  
Módulos	
  mobile	
  friendly	
  
•  angular-­‐gestures:	
  permite	
  capturar	
  acciones	
  touch	
  
sobre	
  los	
  elementos	
  del	
  DOM.	
  
•  Es	
  un	
  wrapper	
  de	
  hammer.js	
  
h0ps://github.com/wzr1337/angular-­‐gestures	
  
Futuro:	
  Angular	
  2.0	
  
	
  
•  ECMAScript	
  6	
  è	
  Traceur	
  compiler	
  
•  Mejora	
  databinding	
  con	
  Object.observer()	
  
•  Angular	
  logging	
  è	
  	
  diary.js	
  
•  Modular	
  è	
  versión	
  Desktop	
  /	
  Mobile.	
  
•  DI	
  è	
  a	
  traves	
  de	
  anotaciones.	
  
•  Mejora	
  performance	
  templaYng.	
  
•  !	
  Más	
  orientado	
  al	
  disposiYvo	
  móvil	
  !	
  
h0p://blog.angularjs.org/2014/03/angular-­‐20.html	
  
Angular	
  JS	
  cómo	
  aplicación	
  naYva	
  
GRACIAS	
  
@sergicontre	
   sergio.contreras@sopra.com	
  

Contenu connexe

Tendances

Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJSLuis Natividad
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJSAdrián Paredes
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders ValenciaJavier Ruiz
 
Introducciòn a AngularJS
Introducciòn a AngularJSIntroducciòn a AngularJS
Introducciòn a AngularJSRené Olivo
 
Angular.js
Angular.jsAngular.js
Angular.jsGDG Cali
 
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
 
Introducción a Knockout
Introducción a KnockoutIntroducción a Knockout
Introducción a KnockoutOscar Gensollen
 
Hack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSHack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSCarlos Azaustre
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.jsCarlos Azaustre
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS Marcos Reynoso
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsVisual Engineering
 

Tendances (20)

Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Por qué AngularJS
Por qué AngularJSPor qué AngularJS
Por qué AngularJS
 
AngularJS
AngularJSAngularJS
AngularJS
 
Angular js Frontenders Valencia
Angular js Frontenders ValenciaAngular js Frontenders Valencia
Angular js Frontenders Valencia
 
Advanced angular 1
Advanced angular 1Advanced angular 1
Advanced angular 1
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
Introducciòn a AngularJS
Introducciòn a AngularJSIntroducciòn a AngularJS
Introducciòn a AngularJS
 
Angular.js
Angular.jsAngular.js
Angular.js
 
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
 
Introducción a Knockout
Introducción a KnockoutIntroducción a Knockout
Introducción a Knockout
 
Hack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJSHack2Progress - Desarrollando una aplicación web con AngularJS
Hack2Progress - Desarrollando una aplicación web con AngularJS
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.js
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
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
 
[Curso MVC] ViewModels y Validacion
[Curso MVC] ViewModels y Validacion[Curso MVC] ViewModels y Validacion
[Curso MVC] ViewModels y Validacion
 

En vedette

Angular Translate
Angular TranslateAngular Translate
Angular TranslateAxilis
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicMicael Gallego
 

En vedette (6)

Angular translate
Angular translateAngular translate
Angular translate
 
Angular Translate
Angular TranslateAngular Translate
Angular Translate
 
Curso AngularJS - 1. introducción
Curso AngularJS - 1. introducciónCurso AngularJS - 1. introducción
Curso AngularJS - 1. introducción
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
 
El viaje de Angular1 a Angular2
El viaje de Angular1 a Angular2El viaje de Angular1 a Angular2
El viaje de Angular1 a Angular2
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
 

Similaire à Angular js in mobile

Nativescript
NativescriptNativescript
NativescriptAutentia
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdfDubiWeb.TK
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Ignacio Muñoz Vicente
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptLuis Guerrero
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.jsGDG Cali
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web DesignJuan Morales
 
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...Software Guru
 
Desarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webDesarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webJulio Alfaro
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015Globant
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsAsier Marqués
 
Creación de Aplicaciones de Tiempo Real con Angular y Node.js
Creación de Aplicaciones de Tiempo Real con Angular y Node.jsCreación de Aplicaciones de Tiempo Real con Angular y Node.js
Creación de Aplicaciones de Tiempo Real con Angular y Node.jsSoftware Guru
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
 

Similaire à Angular js in mobile (20)

Nativescript
NativescriptNativescript
Nativescript
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
 
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
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScript
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.js
 
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
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Angular: el presente-futuro
Angular: el presente-futuroAngular: el presente-futuro
Angular: el presente-futuro
 
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...
Frameworks Profesionales para Desarrollo de Aplicaciones con JavaScript: ¿Ang...
 
Desarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webDesarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías web
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
Angular 6
Angular 6Angular 6
Angular 6
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Creación de Aplicaciones de Tiempo Real con Angular y Node.js
Creación de Aplicaciones de Tiempo Real con Angular y Node.jsCreación de Aplicaciones de Tiempo Real con Angular y Node.js
Creación de Aplicaciones de Tiempo Real con Angular y Node.js
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 

Angular js in mobile

  • 1. Angular  JS  in  Mobile  Devices   @sergicontre  
  • 2. Sobre  mi   •  So5ware  Mobile  Developer       @sergicontre   h9ps://github.com/sergicontre   h9p://plnkr.co/users/sergicontre  
  • 3. Angular  JS   •  Es  un  framework  ‘Model-­‐View-­‐Whatever’   •  100%  Javascript   •  Constante  crecimiento   – Primera  Release  Octubre  de  2010  (versión  0.9.0)   – Versión  actual:  1.2.16  /  1.3.0-­‐beta.7   – Versión  2.0:  ¿?   •  Soportada  por  los  navegadores  modernos.    
  • 4. Angular  JS  -­‐  CaracterísYcas   •  Data-­‐binding  bidireccional.   –  Enlace  automáYco  para  actualizar  la  vista  cuando  el   modelo  cambia,  ó  actualizar  el  modelo  cuando  la  vista   cambia.  Evita  que  realices  la  manipulación  del  DOM.     Demo:  h0p://embed.plnkr.co/ZcS3a4  
  • 5. Angular  JS  -­‐  CaracterísYcas   •  DirecYvas   –  Es  una  marca  sobre  un  elemento  del  DOM   •  Atributo   •  Elemento   •  CSS   –  Permite  enlazar  un  comportamiento  específico  o   transformación  del  elemento  DOM.     Demo:  h0p://embed.plnkr.co/9WEytxN8wUsNxp973Zzg  
  • 6. Angular  JS  -­‐  CaracterísYcas   •  Controladores   – Es  una  función  constructora  Javascript  que   permite  instanciar  un  objeto  $scope,  que  servirá   de  pegamento  con  la  vista  (HTML).     Demo:  h0p://embed.plnkr.co/ZcS3a4  
  • 7. Angular  JS  -­‐  CaracterísYcas   •  Patrones  de  diseño   – Inyección  de  dependencias.   – Módulo.   – Factoría.    
  • 8. Angular  JS  -­‐  CaracterísYcas   •  Facilita  realizar  tesYng.   – Test  unitarios.  Demo:  h0p://embed.plnkr.co/gtp2jtGfmgoibd4cuFBr   – End  to  End.     “NUNCA  LO  OLVIDES….DOS  VECES  AL  DÍA!!”    
  • 9. Angular  JS  -­‐  Tendencia   Angular  JS   Backbone  JS   Ember  JS   Knockout  
  • 10. Problemas  que  nos  plantea  un   desarrollo  híbrido   •  Fragmentación  del  Market.   •  CaracterísYcas  especificas  de  cada  plataforma.   •  Sensación  de  aplicación  naYva.   •  UI  muy  bonitas  ==  mucho  CSS.   •  CSS  es  una  parte  críYca  de  tu  App.   •  ExpectaYvas  de  usuario  muy  altas.  
  • 11. ¿Por  qué  Angular  JS    en  un  desarrollo   híbrido?   •  Javascript  con  soporte  cross  browser.   •  Menos  código  =  menos  bugs.   •  Menos  código  =  mejor  mantenimiento.   •  Patrón  modulo,  encapsulado  del  código.   •  Componentes  reusables  (direcYvas,  filtros…).   •  Testeable.  (unit  tesYng,  e2e…)   •  Comunidad.  
  • 12. Performance.  OpYmizaciones  en   Angular  JS   •  Angular  JS  uYliza  dirty  checking  para  actualizar   sus  views  y  comprobar  si  un  valor  ha   cambiado.   •  $digest  loop,  $watch…      
  • 13. Performance.  OpYmizaciones  en   Angular  JS   Se  incluyen  2  $watch  en  la  lista  de  $watch  
  • 14. Performance.  OpYmizaciones  en   Angular  JS   Se  incluyen  1  $watch  en  la  lista  de  $watch  
  • 15. Performance.  OpYmizaciones  en   Angular  JS   Se  incluyen  (2*n)  +  1  $watch  en  la  lista  de  $watch  
  • 16. Performance.  OpYmizaciones  en   Angular  JS   •  $digest  loop  
  • 17. Performance.  OpYmizaciones  en   Angular  JS   •  Dirty  checking  
  • 18. Performance.  OpYmizaciones  en   Angular  JS   •  Dirty  checking   – Ocurre  un  evento  dentro  del  contexto  de  angular.   – $digest  loop:  pregunta  a  cada  $watch  si  ha   cambiado.   – Si  algún  $watch  reporta  un  cambio,  vuelve  a   lanzar  $digest  loop.   – El  nuevo  $digest  loop  no  reporta  un  cambio.   – Actualización  del  DOM  
  • 19. Performance.  OpYmizaciones  en   Angular  JS   •  Minimizar  el  tamaño  del  DOM.   •  Pre  carga  templates  (grunt-­‐html2js)   –  h9ps://github.com/karlgoldstein/grunt-­‐html2js   •  Uso  FastClick.     –  h9p://5labs.github.io/fastclick/   •  Prevenir  page-­‐zooming.   •  Uso  librerias  JS/CSS  opYmizadas  para  móviles   –  Ionic  Framework.  h9p://ionicframework.com/   –  Demo:  h9p://embed.plnkr.co/N5BjFK  
  • 20. Performance.  OpYmizaciones  en   Angular  JS   •  Transiciones  entre  vistas  basadas  completamente  en  CSS   •  Uso  de  3D  transforms.   •  Listen  $routeChangeStart  para  actualizar  la  dirección  de   transición  de  la  vista.   •  Demo:  h9p://embed.plnkr.co/lrIay2      
  • 21. Performance.  OpYmizaciones  en   Angular  JS   •  Minimizar  el  código  Angular  JS:  ngMin     ngMin  
  • 22. Módulos  mobile  friendly   •  Bindonce:  enlaza  una  vez  y  despues  destruye  watchers   innecesarios.   •  Ejemplo:  en  listas  con  muchos  elementos   Resultado:  1  watcher  en  lugar  de  1  +  (6*n)   h0ps://github.com/Pasvaz/bindonce  
  • 23. Módulos  mobile  friendly   •  angular-­‐carousel:  permite  crear  un  carrusel  touch  a   parYr  de  una  expresión  ng-­‐repeat.   •  Usa  3D  transformaYon,  DOM-­‐buffering…   h0ps://github.com/revolunet/angular-­‐carousel   DEMO:  h0p://embed.plnkr.co/ULicic    
  • 24. Módulos  mobile  friendly   •  angular-­‐snap:  permite  crear  menu  lateral  oculto   con  soporte  swipe,  mulYple  drawers,  diferentes   Ypos  de  transiciones   h0ps://github.com/jtrussell/angular-­‐snap.js   DEMO:  h0p://embed.plnkr.co/zKu1GXEqW4MxuwtN4GQT    
  • 25. Módulos  mobile  friendly   •  angular-­‐gestures:  permite  capturar  acciones  touch   sobre  los  elementos  del  DOM.   •  Es  un  wrapper  de  hammer.js   h0ps://github.com/wzr1337/angular-­‐gestures  
  • 26. Futuro:  Angular  2.0     •  ECMAScript  6  è  Traceur  compiler   •  Mejora  databinding  con  Object.observer()   •  Angular  logging  è    diary.js   •  Modular  è  versión  Desktop  /  Mobile.   •  DI  è  a  traves  de  anotaciones.   •  Mejora  performance  templaYng.   •  !  Más  orientado  al  disposiYvo  móvil  !   h0p://blog.angularjs.org/2014/03/angular-­‐20.html  
  • 27. Angular  JS  cómo  aplicación  naYva  
  • 28. GRACIAS   @sergicontre   sergio.contreras@sopra.com