introducción a angularjs

49
Introducción a AngularJS 1

Upload: adrian-paredes

Post on 05-Aug-2015

274 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Introducción a AngularJS

Introducción a AngularJS

1

Page 2: Introducción a AngularJS

Agenda

● Historia de las Apps Webs● ¿Por qué AngularJS?● Building Blocks● Herramientas● ¿De qué trata el Curso?

2

Page 3: Introducción a AngularJS

Arquitectura en Apps Webs

● Primera Generacióno HTML + CSS con poco JS

● Segunda Generacióno Ajax + Abuso de jQuery

● Tercera Generacióno Frameworks JavaScript

3

Page 4: Introducción a AngularJS

MVC del Lado del Cliente

4

Page 5: Introducción a AngularJS

Explosión de Frameworks JS

5

Page 6: Introducción a AngularJS

Explosión de Frameworks JS

6

Page 7: Introducción a AngularJS

Explosión de Frameworks JS

7

Page 8: Introducción a AngularJS

Explosión de Frameworks JS

8

Page 9: Introducción a AngularJS

Explosión de Frameworks JS

9

http://todomvc.com/

Page 10: Introducción a AngularJS

Aplicaciones Web Modernas

● Mucha UX● Responsibilidad● Single Page App● Mucho JS (Rich Apps)● Frameworks CSS: Less, Sass, Compass● Apps Reactivas (Asincrónicas)

10

Page 11: Introducción a AngularJS

¿Por qué AngularJS?

11

Page 12: Introducción a AngularJS

¿Por qué AngularJS?

● Es Open Source● Lo Mantiene Google● Enorme Comunidad y Aceptación● 6 Años de Historia● Sigue Evolucionando● Fomenta la Programación Declarativa● Tiene Inyección de Dependencias

12

Page 13: Introducción a AngularJS

Mi Experiencia con AngularJS

13

Page 14: Introducción a AngularJS

Hello World

<input type="text" ng-model="yourName"><h1>Hello {{yourName}}!</h1>

14

Page 15: Introducción a AngularJS

Directives

● ng-app● ng-model● ng-show● ng-hide● ng-click● ng-repeat● ng-controller

15

● ng-change● ng-dblclick● ng-include● ng-focus● ng-disabled● ng-submit● ng-copy

Page 16: Introducción a AngularJS

Custom Directives

16

<cent-messageng-model="messages.info"info>

</cent-message>

<div cent-version></div>

Page 17: Introducción a AngularJS

Modules

angular.module(‘myModule1’, []);

angular.module(‘myModule2’, []);

var myModule = angular.module(‘myModule’,[‘myModule1,‘myModule2’]);

17

Page 18: Introducción a AngularJS

Controllers

myModule.controller(‘TodoCtrl’,function($scope, $interval) {

...}

);

18

Page 19: Introducción a AngularJS

Unit Test

19

Page 20: Introducción a AngularJS

E2E Test

20

SeleniumWebDriver

Page 21: Introducción a AngularJS

Angular Expressions

<span>3 + 5 = {{3 + 5}}</span>

<button ng-click=”window.alert(‘Hello’)”>Greet</button>

<button ng-click=”greet()”>Greet</button>

21

{{ }}

Page 22: Introducción a AngularJS

Filters

<span>{{ price | currency }}</span>

<li ng-repeat=”product in products | orderBy: ’price’”>

<span>Now: {{ now | date: ‘dd/MM/yyyy’ }}

22

Page 23: Introducción a AngularJS

Custom Filters

myModule.filter(‘myFilter’, function() {return function(input, opt1, opt2) {

…return output;

};});

23

Page 24: Introducción a AngularJS

Forms

<form name=”myForm”ng-submit=”formCtrl.submit()”><input ng-model=”author” required><button type=”submit” value=”Submit”

ng-disabled=”myForm.$invalid”></form>

24

Page 25: Introducción a AngularJS

Forms

25

Page 26: Introducción a AngularJS

Scopes

$scope.sayHello = function() {$scope.greeting = ‘Hello World’;

}

<span>{{ greeting }}</span>

26

Page 27: Introducción a AngularJS

Scopes

27

myModule.controller(‘MyController’,function($rootScope, $scope) {

...}

);

Page 28: Introducción a AngularJS

Scopes

28

● $scope.$watch(expression, function);● $scope.$broadcast(name, args);● $scope.$emit(name, args);● $scope.$on(event, function);● $scope.$parent● $scope.$new

Page 29: Introducción a AngularJS

Comunicación entre Controllers

● Mediante Herencia de Scopes● Mediante Eventos● Mediante Servicios

29

Page 30: Introducción a AngularJS

Services

30

● $rootScope● $scope● $timeout● $window● $interval● $http● $resource

● $log● $q● $animate● $filter● $httpBackend● $controller● $document

Page 31: Introducción a AngularJS

Custom Services

31

myModule.factory(‘MyService’,function() {

return {method1: function() { … },method2: function() { … }

}});

Page 32: Introducción a AngularJS

$http

32

● $http.get● $http.post● $http.head● $http.put● $http.delete● $http.jsonp● $http.patch

Page 33: Introducción a AngularJS

$http.get

33

$http.get(‘/someUrl’).success(function(data, status,headers, config) { … }).error(function(data, status, headers,

config) { … })

Page 34: Introducción a AngularJS

$http.post

34

$http.post(‘/someUrl’, {user: ‘adrian’, pass: ‘adrian’

}).success(function(data, status, headers,config) { … })

.error(function(data, status, headers,config) { … })

Page 35: Introducción a AngularJS

$resource

35

● RESTful server-side data source● Ideal para CRUD de resources● Encapsula $http● Permite usar objs como ActiveRecords● Actions: get, query, save, remove, delete● Permite definir Custom Actions

Page 36: Introducción a AngularJS

$resource

36

var Users = $resource(‘/users/:userId’,{ userId: ‘@id’ });var user = Users.get({ userId:123 },

function() {user.name = ‘adrian’;user.$save();});

Page 37: Introducción a AngularJS

$resource

37

myModule.factory(‘Users’,function($resource) {

return $resource(‘users/:userId’,{ userId: ‘@_id’ },{ myUpdate: { method: ‘PUT’ } }

);});

Page 38: Introducción a AngularJS

$resource

38

myModule.controller(‘MyCtrl’,function(Users) {

var user = Users.get({ userId:123 },function() {

user.name = ‘adrian’;user.$myUpdate();

});});

Page 39: Introducción a AngularJS

Herramientas

39

Page 40: Introducción a AngularJS

ng-inspector

40

Page 41: Introducción a AngularJS

NodeJS y NPM

41

Page 42: Introducción a AngularJS

Bower

42

Page 43: Introducción a AngularJS

Grunt / Gulp

43

Page 44: Introducción a AngularJS

Yeoman

44

Page 45: Introducción a AngularJS

Generadores

45

angular-seed

JHipster

generator-angular-fullstack

Page 46: Introducción a AngularJS

¿De qué trata el Curso?

46

Page 47: Introducción a AngularJS

¿De qué trata el Curso?

47

Page 48: Introducción a AngularJS

Recursos

● Mi estante AngularJS en VolKno:o http://www.volkno.com.ar/u/elfrasco/angularjs

● El código fuente que veremos en el curso:o https://github.com/elfrasco/angular-course

● ng-newsletter:o http://www.ng-newsletter.com/

48

Page 49: Introducción a AngularJS

49

¡Muchas Gracias!