AngularJS

47

description

Slides from my AngularJS talk at stahlstadt.js http://www.meetup.com/stahlstadt-js/events/159159282/

Transcript of AngularJS

Page 1: AngularJS
Page 2: AngularJS

Mario Uher

@ream88 / haihappen

Page 3: AngularJS
Page 4: AngularJS

@beenetwork

• Seit 2008

• Rails

• Node.js

• iOS

Page 5: AngularJS
Page 6: AngularJS

WORKFLOW

• möglichst viel am Server machen

• JavaScript wenn notwendig

• 5 surprisingly painful things about client-side JS

Page 7: AngularJS
Page 8: AngularJS

$scope

$rootScope

DirectivesFactories

Module

Services

Expressions

Data binding

DI

Routers

Testing

Karma

Constants

Providers

Filters

Dependencies

Scopes

Filters

Factories

DependenciesConstants

Data binding

Services

Directives

Data binding

Constants

Directives$rootScope

Testing

Data binding

Expressions

Karma

Directives

Data binding

Factories

DependenciesDependencies

DI

Data binding

Karma

Directives

Constants

Dependencies

Directives

DirectivesDirectives

Services

Testing

DependenciesDI$scope

$scope

$scope

Directives

DependenciesDependencies

$scope

DI

DI

Directives

Dependencies

Dependencies

Dependencies

Data binding

Dependencies

Page 9: AngularJS

???

Page 10: AngularJS

DIRECTIVES(MVC)

Page 11: AngularJS

HTML

Page 12: AngularJS

ML = MARKUP LANGUAGE

Page 13: AngularJS

MARKUP LANGUAGE

• HTML 2.0

!

Page 14: AngularJS

MARKUP LANGUAGE

• HTML 2.0

• FrontPage / Dreamweaver

?

Page 15: AngularJS

MARKUP LANGUAGE

• HTML 2.0

• FrontPage / Dreamweaver

• HTML5

!

Page 16: AngularJS

MARKUP LANGUAGE

• HTML 2.0

• FrontPage / Dreamweaver

• HTML5

• Twitter Bootstrap

?

Page 17: AngularJS

MARKUP LANGUAGE• HTML 2.0

• FrontPage / Dreamweaver

• HTML5

• Twitter Bootstrap

• Web Components

!

Page 18: AngularJS

MARKUP LANGUAGE• HTML 2.0

• FrontPage / Dreamweaver

• HTML5

• Twitter Bootstrap

• Web Components

?

Page 19: AngularJS

DIRECTIVES(MVC)

Page 20: AngularJS

ALERT

<div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you can't do that.! <a href="#" ng-click="hidden = true">&times;</a></div>

Page 21: AngularJS

ALERT

<div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you can't do that.! <a href="#" ng-click="hidden = true">&times;</a></div>

Page 22: AngularJS

ALERT

<div class="alert" ng-hide="hidden"> I'm sorry Mario, I'm afraid you can't do that.! <a href="#" ng-click="hidden = true">&times;</a></div>

Page 23: AngularJS

ALERT

Page 24: AngularJS

GRAPH

<graph> <axis position="left"></axis> <axis position="bottom"></axis> <line name="typical-week" data="visitors.typicalWeek"></line> <line name="this-week" data="visitors.thisWeek"></line> <line name="last-week" data="visitors.lastWeek"></line></graph>

How Angular Lets Us Iterate Like Crazy

Page 25: AngularJS

GRAPH

<graph> <axis position="left"></axis> <axis position="bottom"></axis> <line name="typical-week" data="visitors.typicalWeek"></line> <line name="this-week" data="visitors.thisWeek"></line> <line name="last-week" data="visitors.lastWeek"></line></graph>

How Angular Lets Us Iterate Like Crazy

Page 26: AngularJS

WYSIWYG

<textarea name="content" wysiwyg></textarea>

Page 27: AngularJS

WYSIWYG

<textarea name="content" wysiwyg></textarea>

Page 28: AngularJS

CONTROLLERS(MVC)

Page 29: AngularJS

CONTROLLER

function UserController($scope) { $scope.name = 'Mario';}!<div ng-controller="UserController"> My name is {{name}}</div>

Page 30: AngularJS

CONTROLLER

function UserController($scope) { $scope.name = 'Mario';} !<div ng-controller="UserController"> My name is {{name}}</div>

Page 31: AngularJS

CONTROLLER

function UserController($scope) { $scope.name = 'Mario';}!<div ng-controller="UserController"> My name is {{name}}</div>

Page 32: AngularJS

CONTROLLER

function UserController($scope) { $scope.users = [{ name: 'Mario' }];}!<table ng-controller="UserController"> <tr ng-repeat="user in users"> <td>{{user.name}}</td> </tr></table>

Page 33: AngularJS

CONTROLLER

function UserController($scope) { $scope.users = [{ name: 'Mario' }];}!<table ng-controller="UserController"> <tr ng-repeat="user in users"> <td>{{user.name}}</td> </tr></table>

Page 34: AngularJS

SERVICES(MVC)

Page 35: AngularJS

SERVICES

• Plain JavaScript Objects

• Binden Ressourcen wie Webdienste und Datenbanken ein

• Enthalten Geschäftslogik

Page 36: AngularJS

SERVICES

var User = $resource('/user/:userId', { userId:'@id' });var user = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save();});

Page 37: AngularJS

SERVICES

var User = $resource('/user/:userId', { userId:'@id' });var user = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save();});

Page 38: AngularJS

SERVICES

var User = $resource('/user/:userId', { userId:'@id' });var user = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save();});

Page 39: AngularJS

SERVICES

var User = $resource('/user/:userId', { userId:'@id' });var user = User.get({ userId:1 }, function() { user.name = 'Mario'; user.$save();});

Page 40: AngularJS

SERVICES

angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });});!function UserController($scope, User) { $scope.users = User.query();! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); })}

Page 41: AngularJS

SERVICES

angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });});!function UserController($scope, User) { $scope.users = User.query();! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); })}

Page 42: AngularJS

SERVICES

angular.module('App', ['ngResource']).factory('User', function($resource) { return $resource('/user/:userId', { userId:'@id' });});!function UserController($scope, User) { $scope.users = User.query();! var user = User.get({ userId: 1 }, function() { user.name = 'Mario'; user.save(); })}

Page 43: AngularJS

DEPENDENCY INJECTION

function UserController($scope, User) { $scope.users = User.query();}

Page 44: AngularJS

DEPENDENCY INJECTION

• Jeder Controller definiert seine Abhängigkeiten

• Angular kümmert sich um die Auflösung der Abhängigkeiten und meldet Probleme

• Macht Testen leicht

Page 45: AngularJS

ANGULAR ANIMATE

Page 46: AngularJS

LERNEN• Tutorial und Docs auf http://angularjs.org

• Brad Green (@bradlygreen)

• Igor Minar (@IgorMinar)

• @angularjs

• https://egghead.io (@eggheadio)

Page 47: AngularJS

THX!