SlideShare a Scribd company logo
Sebastian Springer
@basti_springer
Wednesday, June 26, 13
WER BIN ICH?
• Sebastian Springer
• https://github.com/sspringer82
• @basti_springer
• Teamlead @ Mayflower
Wednesday, June 26, 13
INHALT
• Bootstrap
• Scope
• Controller
• Model
• View
• Direktiven
• Filter
• Dependency Injection
• Module
• Testing
Wednesday, June 26, 13
ANGULAR?
• Open Source MVC Framework
• von Google
• sehr gut erweiterbar
• jQuery lite bundled
• ng-* Direktiven
Wednesday, June 26, 13
INDEX.HTML
Wednesday, June 26, 13
BOOTSTRAP
<!DOCTYPE html>
<html ng-app>
<head>
<title>Movie Database</title>
<script src="/js/lib/angular.js"></script>
</head>
<body>
Hello {{ 'World!' }}
</body>
</html>
Wednesday, June 26, 13
BOOTSTRAP
Wednesday, June 26, 13
Wednesday, June 26, 13
CONTROLLER
• Funktionen
• Kontrolliert dasVerhalten der Applikation
• Verbindet Models undViews
• Scope alsVerbindungselement
Wednesday, June 26, 13
INDEX.HTML
Wednesday, June 26, 13
CONTROLLER
<!DOCTYPE html>
<html data-ng-app>
<head>
<title>Movie Database</title>
<script src="/js/lib/angular.js"></script>
<script src="/js/controllers.js"></script>
</head>
<body ng-controller="MovieListCtrl">
{{ name }}
</body>
</html>
Wednesday, June 26, 13
CONTROLLER
<!DOCTYPE html>
<html data-ng-app>
<head>
<title>Movie Database</title>
<script src="/js/lib/angular.js"></script>
<script src="/js/controllers.js"></script>
</head>
<body ng-controller="MovieListCtrl">
{{ name }}
</body>
</html>
Wednesday, June 26, 13
JS/CONTROLLERS.JS
Wednesday, June 26, 13
CONTROLLER
function MovieListCtrl($scope) {
$scope.name = 'Matrix';
}
Wednesday, June 26, 13
SCOPE
• Änderungen in Models erkennen
• Ausführungskontext
• An Controller gebunden
Wednesday, June 26, 13
function MovieListCtrl($scope) {
$scope.name = 'Matrix';
}
SCOPE
Wednesday, June 26, 13
<!DOCTYPE html>
<html data-ng-app>
<head>
<title>Movie Database</title>
<script src="/js/lib/angular.js"></script>
<script src="/js/controllers.js"></script>
</head>
<body ng-controller="MovieListCtrl">
{{ name }}
</body>
</html>
SCOPE
Wednesday, June 26, 13
Wednesday, June 26, 13
DATA-BINDING
• Das Model hält die Daten
• DieView erhält die Daten und stellt sie dar
• Scope alsVerbindungsstück
Wednesday, June 26, 13
TWO-WAY-DATA-BINDING
• Controller gibt den Wert für das Model vor
• Über das Model kann der Wert geändert werden
Wednesday, June 26, 13
TWO-WAY-DATA-BINDING
function LoginCtrl($scope) {
$scope.username = 'stranger';
$scope.login = function () {
if ($scope.username === 'admin' &&
$scope.password === 'test') {
$scope.user = 'Administrator';
}
}
}
Wednesday, June 26, 13
Wednesday, June 26, 13
MODEL
Wednesday, June 26, 13
MODEL
• Daten zur Darstellung in derView
• keinerleiVorgaben hinsichtlich des Aufbaus
Wednesday, June 26, 13
MODEL
Wednesday, June 26, 13
MODEL
function MovieListCtrl($scope) {
$scope.name = 'Matrix';
}
Wednesday, June 26, 13
VIEW
Wednesday, June 26, 13
VIEW
• Darstellung der Modeldaten
• Zeigt Änderungen des Models sofort an
• Zugriff auf den Scope über {{ }}
Wednesday, June 26, 13
VIEW
Wednesday, June 26, 13
VIEW
<!DOCTYPE html>
<html data-ng-app>
<head>
<title>Movie Database</title>
<script src="/js/lib/angular.js"></script>
<script src="/js/controllers.js"></script>
</head>
<body ng-controller="MovieListCtrl">
{{ name }}
</body>
</html>
Wednesday, June 26, 13
DIREKTIVEN
Wednesday, June 26, 13
DIREKTIVEN
• HTML Attribute
• Verhalten oder DOMTransformation
• Built-ins und eingene Direktiven
• Eigene Direktiven
• z.B. ngApp, ngController, ngRepeat
Wednesday, June 26, 13
DIREKTIVEN
Wednesday, June 26, 13
JS/CONTROLLERS.JS
Wednesday, June 26, 13
DIREKTIVEN
function MovieListCtrl($scope) {
$scope.films = [
{name: 'Matrix', year: 2005, genre: 'Sci-Fi'},
{name: 'Avatar', year: 2009, genre: 'Sci-Fi'},
{name: 'Gran Torino', year: 2008, genre: 'Drama'}
];
}
Wednesday, June 26, 13
INDEX.HTML
Wednesday, June 26, 13
<table>
<thead>
<tr>
<th>Name</th><th>Jahr</th><th>Genre</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="film in films">
<td>{{film.name}}</td>
<td>{{film.year}}</td>
<td>{{film.genre}}</td>
</tr>
</tbody>
</table>
Wednesday, June 26, 13
Wednesday, June 26, 13
FILTER
Wednesday, June 26, 13
• Datentransformation
• Verbindung über das Pipe-Symbol
• Eigene Filter
• z.B. uppercase, json
FILTER
Wednesday, June 26, 13
{{ 'Hello World' | uppercase }}
<input ng-model="search">
<table>
<thead>
<tr>
<th>Name</th><th>Jahr</th><th>Genre</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="film in films | filter: search">
<td>{{film.name}}</td>
<td>{{film.year}}</td>
<td>{{film.genre}}</td>
</tr>
</tbody>
</table>
Wednesday, June 26, 13
{{ 'Hello World' | uppercase }}
<input ng-model="search">
<table>
<thead>
<tr>
<th>Name</th><th>Jahr</th><th>Genre</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="film in films | filter: search">
<td>{{film.name}}</td>
<td>{{film.year}}</td>
<td>{{film.genre}}</td>
</tr>
</tbody>
</table>
Wednesday, June 26, 13
Wednesday, June 26, 13
DEPENDENCY INJECTION
Wednesday, June 26, 13
DEPENDENCY INJECTION
• Strukturierung - Komponenten für Model,View, Controller
• Lose Kopplung - DI löst Abhängigkeiten auf
• DI stellt Services zurVerfügung
• Caching Mechanismus
Wednesday, June 26, 13
DEPENDENCY INJECTION
Wednesday, June 26, 13
DEPENDENCY INJECTION
function MovieListCtrl($scope, $http) {
$http.get('/movies').success(function(data) {
$scope.films = data;
});
}
Wednesday, June 26, 13
DEPENDENCY INJECTION
function MovieListCtrl($scope, $http) {
$http.get('/movies').success(function(data) {
$scope.films = data;
});
}
Wednesday, June 26, 13
MODULE
Wednesday, June 26, 13
• Geben den Bootstrap-Prozess einer Applikation vor
• Service Modul
• Directive Modul
• Filter Modul
• Application Modul
MODULE
Wednesday, June 26, 13
MODULE
var myApp = angular.module('myApp', []);
myApp.controller('MovieListCtrl',
['$scope', '$http', function ($scope, $http) {
$http.get('/movies').success(function(data) {
$scope.films = data;
});
}]);
Wednesday, June 26, 13
MODULE
var myApp = angular.module('myApp', []);
myApp.controller('MovieListCtrl',
['$scope', '$http', function ($scope, $http) {
$http.get('/movies').success(function(data) {
$scope.films = data;
});
}]);
Wednesday, June 26, 13
TESTING
Wednesday, June 26, 13
TESTS
• Karma alsTestrunner
• sudo npm install -g karma
• Angular setzt auf Jasmine
• Zwei Arten vonTests
• Unittests
• E2E-Tests
Wednesday, June 26, 13
UNITTESTS
Wednesday, June 26, 13
UNITTESTS
• Testen Units of Code
• Grundlage fürTDD
• Pfad: test/unit/*
• Konfiguration: config/karma.conf.js
Wednesday, June 26, 13
TEST/UNIT/
CONTROLLERSPEC.JS
Wednesday, June 26, 13
describe('movieListCtrl', function(){
var scope, ctrl, $httpBackend;
beforeEach(inject(function(_$httpBackend_, $rootScope,
$controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('data/movies.json').respond(
[{"name": "Matrix", "year": 2005, "genre": "Sci-Fi"}]
);
scope = $rootScope.$new();
ctrl = $controller(movieListCtrl, {$scope: scope});
}));
Wednesday, June 26, 13
it ("should fetch a list with one movie", function () {
expect(scope.films).toBeUndefined();
$httpBackend.flush();
expect(scope.films).toEqual(
[{"name": "Matrix", "year": 2005, "genre": "Sci-Fi"}]
);
});
Wednesday, June 26, 13
UNITTESTS
$ ./scripts/test.sh
Starting Karma Server (http://karma-runner.github.io)
-------------------------------------------------------------------
INFO [karma]: Karma server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [launcher]: Starting browser Firefox
INFO [Firefox 21.0 (Mac)]: Connected on socket id 8lw9q3ZBbNpAb7rc3RpS
INFO [Chrome 27.0 (Mac)]: Connected on socket id KI5wy1rfgkIU32cP3RpR
Firefox 21.0 (Mac): Executed 4 of 4 SUCCESS (0.134 secs / 0.037 secs)
Chrome 27.0 (Mac): Executed 4 of 4 SUCCESS (0.157 secs / 0.044 secs)
TOTAL: 8 SUCCESS
Wednesday, June 26, 13
UNITTESTS
Wednesday, June 26, 13
UNITTESTS
INFO [watcher]: Changed file "/srv/
angularMovieDB/app/js/controllers.js".
Watcher
Wednesday, June 26, 13
E2E
Wednesday, June 26, 13
E2E
• Testen zusammenhängende Units
• DOM-Manipulationen
• Pfad: test/e2e
• Konfiguration: config/karma-e2e.conf.js
Wednesday, June 26, 13
TEST/E2E/SCENARIOS.JS
Wednesday, June 26, 13
E2E
describe('Movie List', function() {
beforeEach(function() {
browser().navigateTo('../../app/index.html');
});
it('should display 3 movies', function() {
expect(repeater('table tbody tr').count()).toBe(3);
});
});
Wednesday, June 26, 13
E2E
• Webserver ausführen
• ./scripts/web-server.js
• Tests ausführen
• ./scripts/e2e-test.sh
Wednesday, June 26, 13
E2E
./scripts/e2e-test.sh
Starting Karma Server (http://karma-runner.github.io)
-------------------------------------------------------------------
[2013-06-22 10:26:07.404] [WARN] config - "/" is proxied, you should
probably change urlRoot to avoid conflicts
INFO [karma]: Karma server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 27.0 (Mac)]: Connected on socket id 4YaYP4NBBNKlOgDS_YbA
Chrome 27.0 (Mac): Executed 1 of 1 SUCCESS (0.385 secs / 0.189 secs)
Wednesday, June 26, 13
E2E
• http://docs.angularjs.org/guide/dev_guide.e2e-testing
Wednesday, June 26, 13
ANGULAR-SEED
Wednesday, June 26, 13
ANGULAR-SEED
• Basisstruktur für Projekte
• https://github.com/angular/angular-seed
Wednesday, June 26, 13
TIPPS &TRICKS
• Setzt Module ein
• Nutzt den Router
• Achtet auf den Scope
• Nutzt die Direktiven
• SchreibtTests
Wednesday, June 26, 13
FRAGEN?
Wednesday, June 26, 13
KONTAKT
Sebastian Springer
sebastian.springer@mayflower.de
Mayflower GmbH
Mannhardtstr. 6
80538 München
Deutschland
@basti_springer
https://github.com/sspringer82
Wednesday, June 26, 13
Ad

More Related Content

What's hot (9)

AngularJS - $http & $resource Services
AngularJS - $http & $resource ServicesAngularJS - $http & $resource Services
AngularJS - $http & $resource Services
Eyal Vardi
 
AngularJS Routing
AngularJS RoutingAngularJS Routing
AngularJS Routing
Eyal Vardi
 
AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)
Brian Swartzfager
 
Hands on AngularJS
Hands on AngularJSHands on AngularJS
Hands on AngularJS
Thomas Fankhauser
 
Hack tutorial
Hack tutorialHack tutorial
Hack tutorial
Wakana Yoshizawa
 
Everything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLIEverything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLI
Amadou Sall
 
RequireJS
RequireJSRequireJS
RequireJS
Sebastiano Armeli
 
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Alessandro Nadalin
 
AngularJS Compile Process
AngularJS Compile ProcessAngularJS Compile Process
AngularJS Compile Process
Eyal Vardi
 
AngularJS - $http & $resource Services
AngularJS - $http & $resource ServicesAngularJS - $http & $resource Services
AngularJS - $http & $resource Services
Eyal Vardi
 
AngularJS Routing
AngularJS RoutingAngularJS Routing
AngularJS Routing
Eyal Vardi
 
AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)AngularJS $http Interceptors (Explanation and Examples)
AngularJS $http Interceptors (Explanation and Examples)
Brian Swartzfager
 
Everything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLIEverything You Should Know About the New Angular CLI
Everything You Should Know About the New Angular CLI
Amadou Sall
 
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Angular js is the future. maybe. @ ConFoo 2014 in Montreal (CA)
Alessandro Nadalin
 
AngularJS Compile Process
AngularJS Compile ProcessAngularJS Compile Process
AngularJS Compile Process
Eyal Vardi
 

Similar to Einführung in AngularJS (20)

Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.
Amar Shukla
 
Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long
jaxconf
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IO
ondraz
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
Pablo Godel
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with Siesta
Grgur Grisogono
 
An introduction to Ember.js
An introduction to Ember.jsAn introduction to Ember.js
An introduction to Ember.js
codeofficer
 
Angular js
Angular jsAngular js
Angular js
Eueung Mulyana
 
Dependency management & Package management in JavaScript
Dependency management & Package management in JavaScriptDependency management & Package management in JavaScript
Dependency management & Package management in JavaScript
Sebastiano Armeli
 
Backbone intro
Backbone introBackbone intro
Backbone intro
Ian Yang
 
SilverStripe CMS JavaScript Refactoring
SilverStripe CMS JavaScript RefactoringSilverStripe CMS JavaScript Refactoring
SilverStripe CMS JavaScript Refactoring
Ingo Schommer
 
2a-JQuery AJAX.pptx
2a-JQuery AJAX.pptx2a-JQuery AJAX.pptx
2a-JQuery AJAX.pptx
Le Hung
 
Intro to Ember.js
Intro to Ember.jsIntro to Ember.js
Intro to Ember.js
Jay Phelps
 
jQuery Mobile Deep Dive
jQuery Mobile Deep DivejQuery Mobile Deep Dive
jQuery Mobile Deep Dive
Troy Miles
 
Backbonejs for beginners
Backbonejs for beginnersBackbonejs for beginners
Backbonejs for beginners
Divakar Gu
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
All Things Open
 
intro to Angular js
intro to Angular jsintro to Angular js
intro to Angular js
Brian Atkins
 
Arquillian Constellation
Arquillian ConstellationArquillian Constellation
Arquillian Constellation
Alex Soto
 
spring3.2 java config Servler3
spring3.2 java config Servler3spring3.2 java config Servler3
spring3.2 java config Servler3
YongHyuk Lee
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analystsMeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
Simo Ahava
 
Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.
Amar Shukla
 
Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long
jaxconf
 
mDevCamp - The Best from Google IO
mDevCamp - The Best from Google IOmDevCamp - The Best from Google IO
mDevCamp - The Best from Google IO
ondraz
 
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New AngleLone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
Pablo Godel
 
Unit and functional testing with Siesta
Unit and functional testing with SiestaUnit and functional testing with Siesta
Unit and functional testing with Siesta
Grgur Grisogono
 
An introduction to Ember.js
An introduction to Ember.jsAn introduction to Ember.js
An introduction to Ember.js
codeofficer
 
Dependency management & Package management in JavaScript
Dependency management & Package management in JavaScriptDependency management & Package management in JavaScript
Dependency management & Package management in JavaScript
Sebastiano Armeli
 
Backbone intro
Backbone introBackbone intro
Backbone intro
Ian Yang
 
SilverStripe CMS JavaScript Refactoring
SilverStripe CMS JavaScript RefactoringSilverStripe CMS JavaScript Refactoring
SilverStripe CMS JavaScript Refactoring
Ingo Schommer
 
2a-JQuery AJAX.pptx
2a-JQuery AJAX.pptx2a-JQuery AJAX.pptx
2a-JQuery AJAX.pptx
Le Hung
 
Intro to Ember.js
Intro to Ember.jsIntro to Ember.js
Intro to Ember.js
Jay Phelps
 
jQuery Mobile Deep Dive
jQuery Mobile Deep DivejQuery Mobile Deep Dive
jQuery Mobile Deep Dive
Troy Miles
 
Backbonejs for beginners
Backbonejs for beginnersBackbonejs for beginners
Backbonejs for beginners
Divakar Gu
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
All Things Open
 
intro to Angular js
intro to Angular jsintro to Angular js
intro to Angular js
Brian Atkins
 
Arquillian Constellation
Arquillian ConstellationArquillian Constellation
Arquillian Constellation
Alex Soto
 
spring3.2 java config Servler3
spring3.2 java config Servler3spring3.2 java config Servler3
spring3.2 java config Servler3
YongHyuk Lee
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
Dariusz Kalbarczyk
 
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analystsMeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
Simo Ahava
 
Ad

More from Sebastian Springer (20)

HTMX - ist das die nächste Revolution im Web?
HTMX - ist das die nächste Revolution im Web?HTMX - ist das die nächste Revolution im Web?
HTMX - ist das die nächste Revolution im Web?
Sebastian Springer
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
Sebastian Springer
 
Creating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.jsCreating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.js
Sebastian Springer
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer
 
From Zero to Hero – Web Performance
From Zero to Hero – Web PerformanceFrom Zero to Hero – Web Performance
From Zero to Hero – Web Performance
Sebastian Springer
 
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebVon 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
Sebastian Springer
 
A/B Testing mit Node.js
A/B Testing mit Node.jsA/B Testing mit Node.js
A/B Testing mit Node.js
Sebastian Springer
 
Angular2
Angular2Angular2
Angular2
Sebastian Springer
 
Einführung in React
Einführung in ReactEinführung in React
Einführung in React
Sebastian Springer
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
Sebastian Springer
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
 
Streams in Node.js
Streams in Node.jsStreams in Node.js
Streams in Node.js
Sebastian Springer
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
Sebastian Springer
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
 
Testing tools
Testing toolsTesting tools
Testing tools
Sebastian Springer
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
Sebastian Springer
 
Typescript
TypescriptTypescript
Typescript
Sebastian Springer
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
Sebastian Springer
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Sebastian Springer
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Sebastian Springer
 
HTMX - ist das die nächste Revolution im Web?
HTMX - ist das die nächste Revolution im Web?HTMX - ist das die nächste Revolution im Web?
HTMX - ist das die nächste Revolution im Web?
Sebastian Springer
 
Creating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.jsCreating Enterprise Web Applications with Node.js
Creating Enterprise Web Applications with Node.js
Sebastian Springer
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer
 
From Zero to Hero – Web Performance
From Zero to Hero – Web PerformanceFrom Zero to Hero – Web Performance
From Zero to Hero – Web Performance
Sebastian Springer
 
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebVon 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
Sebastian Springer
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
Sebastian Springer
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Sebastian Springer
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Sebastian Springer
 
Ad

Recently uploaded (20)

How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 

Einführung in AngularJS