SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
AngularJS 
THE BRIDGE BETWEEN TODAY 
AND tomorrow's WEB
@toddmotto
A look at the web 
▸ Yesterday, where we came from 
▸ Tomorrow, where we’re headed 
▸ Today, what’s available 
▸ Angular, today 
▸ Angular, tomorrow
Rewind
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"> 
<TR> 
<TD COLSPAN="3">Oh my!</TD> 
</TR> 
</TABLE>
<BLINK></BLINK> 
<MARQUEE></MARQUEE>
<center> 
<font size="4">Awesome letters</font> 
</center>
<a href="javascript:window.location='http://www1.myawesomeweb.com'"> 
Enter site! 
</a>
<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap"> 
<map name="planetmap"> 
<area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun"> 
<area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury"> 
<area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus"> 
</map>
Where are we 
now?
▸ <video>, <audio> 
▸ WebGL,<canvas> 
▸ getUserMedia 
▸ Geolocation (kinda) 
▸ Fullscreen API 
▸ WebSockets
▸ local and session storage 
▸ History API 
▸ Indexed DB 
▸ Web SQL (kinda) 
▸ Native form validation (required, email etc) 
▸ FormData
▸ Dataset (custom data-*) 
▸ HTML5 semantics 
▸ File/FileReader API 
▸ classList API 
▸ Drag and drop 
▸ postMessage 
▸ contenteditable
And breathe. HTML5 is 
huge.
To make things even more 
difficult for us...
Frameworks and Model- 
View-Whatever
▸ Angular 
▸ Backbone 
▸ Ember 
▸ Knockout 
▸ React
Why 
frameworks?
We're still missing stuff! 
▸ Templates/Encapsulation/Components 
▸ Two-way data binding/Model data 
▸ Promises and Class-like components 
▸ Modules 
▸ Dependency Injection (DI)
So where are we 
going?
Incoming... 
▸ Web Components (HTML5) 
▸ Object.observe (ES7) 
▸ Native Promises (ES6) 
▸ Modules (ES6) 
▸ Classes (ES6)
Web Components 
CUSTOM ELEMENTS
Web Components: Custom Elements 
<google-map latitude="37.77493" longitude="-122.41942"> 
<google-map-marker latitude="37.779" longitude="-122.3892" 
title="Go Giants!"></google-map-marker> 
</google-map>
Web Components 
TEMPLATES
Web Components: Templates 
<template id="google-map"> 
<style> 
:host { 
position: relative; 
} 
#map { 
position: absolute; 
top: 0; 
right: 0; 
bottom: 0; 
left: 0; 
} 
</style> 
<div class="map"> 
<div id="map"></div> 
</div> 
</template>
Web Components 
SHADOW DOM
Web Components: Shadow DOM 
▾<google-map latitude="37.77493" longitude="-122.41942"> 
▾#shadow-root (user-agent) 
<div class="map"> 
<div id="map"> 
<canvas class="map"></canvas> 
</div> 
</div> 
</google-map>
Web Components 
HTML IMPORTS
Web Components: HTML Imports 
<link rel="import" href="../components/google-map.html">
ES7 
OBJECT.OBSERVE()
ES7: Object.observe() 
// html5rocks.com/en/tutorials/es7/observe 
// Let's say we have a model with data 
var model = {}; 
// Which we then observe 
Object.observe(model, function(changes){ 
// This asynchronous callback runs 
changes.forEach(function(change) { 
// Letting us know what changed 
console.log(change.type, change.name, change.oldValue); 
}); 
});
ES6 
PROMISES
ES6: Promises 
// html5rocks.com/en/tutorials/es6/promises 
var promise = new Promise(function(resolve, reject) { 
if (/* everything turned out fine */) { 
resolve('Stuff worked!'); 
} else { 
reject(Error('It broke')); 
} 
}); 
promise.then(function (result) { 
console.log(result); // "Stuff worked!" 
}, function(err) { 
console.log(err); // Error: "It broke" 
});
ES6 
MODULES
ES6: Modules 
// 2ality.com/2014/09/es6-modules-final.html 
//------ lib.js ------ 
export const sqrt = Math.sqrt; 
export function square(x) { 
return x * x; 
} 
export function diag(x, y) { 
return sqrt(square(x) + square(y)); 
} 
//------ main.js ------ 
import { square, diag } from 'lib'; 
console.log(square(11)); // 121 
console.log(diag(4, 3)); // 5
ES6 
CLASSES
ES6: Classes 
// javascriptplayground.com/blog/2014/07/introduction-to-es6-classes-tutorial 
class Model { 
constructor (properties) { 
this.properties = properties; 
} 
toObject() { 
return this.properties; 
} 
}
So... Where's Angular?
Angular 
CUSTOM ELEMENTS
Angular: Custom Elements 
<google-map latitude="37.77493" longitude="-122.41942"> 
<google-map-marker latitude="37.779" longitude="-122.3892" 
title="Go Giants!"></google-map-marker> 
</google-map>
Angular 
TEMPLATES
Angular: Templates 
function googleMap () { 
return { 
scope: { longitude: '=', latitude: '=' }, 
template: [ 
'<div class="map">', 
'<div id="map"></div>', 
'</div>', 
].join('') 
}; 
} 
angular 
.module('app') 
.directive('googleMap', googleMap);
Angular 
"SHADOW DOM"
Angular: "Shadow DOM" 
<google-map latitude="37.77493" longitude="-122.41942"> 
<div class="map"> 
<div id="map"> 
<canvas class="map"></canvas> 
</div> 
</div> 
</google-map>
Angular 
HTML IMPORTS
Angular: HTML Imports 
function googleMap () { 
return { 
scope: { longitude: '=', latitude: '=' }, 
templateUrl: '../google-map.html' 
}; 
} 
angular 
.module('app') 
.directive('googleMap', googleMap);
Angular 
$SCOPE.$WATCH
Angular: $scope.$watch 
function MainCtrl ($scope) { 
$scope.$watch('model', function (newVal, oldVal) { 
// 
}); 
} 
angular 
.module('app') 
.directive('MainCtrl', MainCtrl);
Angular 
PROMISES
Angular: Promises 
$http 
.get('/someurl') 
.then(function (response) { 
// :) 
}, function (reason) { 
// :( 
});
Above and beyond specs 
BUILDING ON TOP OF THE WEB PLATFORM
Angular: Dependency Injection 
function MainCtrl ($scope, $rootScope) { 
} 
angular 
.module('app') 
.controller('MainCtrl', MainCtrl);
Angular: Declarative bindings 
<!-- ng-* --> 
<div ng-controller="UserCtrl as vm"> 
<h1 ng-bind="vm.title"></h1> 
<a href="" ng-click="vm.getUsers();">Get users</a> 
</div>
Angular: DOM creation/destruction 
<ul> 
<li ng-repeat="user in vm.users"></li> 
</ul>
Angular: JS Objects as DOM 
<input type="text" ng-model="vm.someModel"> 
<p>{{ vm.someModel }}</p> 
<!-- 
Maps across input value to Object 
$scope.vm.someModel 
-->
Angular: Expressions 
<p>{{ user.name }} | ({{ user.notifications.length }})</p> 
<!-- 
<p>Todd | (2)</p> 
-->
Angular: Automated events 
<li ng-repeat="user in vm.users"> 
<a href="" ng-click="vm.composeEmail()"> 
Compose email 
</a> 
</li>
Angular: Component lifecycles 
▸ Automatic event binding/unbinding 
▸ Creation/destruction of DOM and ($scope) Model data 
▸ ng-ifs, DOM stored in memory
Angular: Routing 
function Router ($routeProvider, $locationProvider) { 
$routeProvider.when('/inbox', { 
templateUrl: 'views/mailbox.html', 
controller: 'InboxCtrl as vm', 
resolve: InboxCtrl.resolve 
}).when('/email/:id', { 
templateUrl: 'views/email.html', 
controller: 'EmailCtrl as vm', 
resolve: EmailCtrl.resolve 
}).otherwise({ redirectTo: 'inbox' }); 
}; 
angular 
.module('app') 
.config(Router);
Angular: Modular JavaScript 
angular 
.module('app', [ 
'ngRoute', 
'Auth', 
'growl' 
]);
Angular: Form validation 
<form name="authForm" ng-submit="vm.submitForm();"> 
</form> 
<!-- 
authForm.$pristine 
authForm.$dirty 
authForm.$invalid 
authForm.$valid 
authForm.$error 
-->
Where next for Angular? 
2.0 DRIVE: BIT.LY/ZHQT1Q
Angular 2.0: Faster change detection 
ES6 Port of Angular.dart change detection 
github.com/angular/watchtower.js
Angular 2.0: Template engine 
github.com/angular/templating 
@ComponentDirective({ 
selector: 'tab-container', 
observe: { 
'tabs[]': 'tabsChanged' 
}, 
shadowDOM: true 
})
Angular 2.0: Data persistence 
▸ ngWebSocket ($ngWebSocket) 
▸ ngStore ($localStorage, $localDB) 
▸ ngOffline ($serviceWorker, $connection) 
▸ ngData (Models, IAdapter, ChangeEvent) 
▸ ngHttp (low-mid level APIs)
Angular 2.0: Annotations 
// reduces boilerplate and hides angular wireframe 
@Provide(Heater) 
export class MockHeater { 
constructor() {} 
on() { 
console.log('Turning on the MOCK heater...'); 
} 
off() {} 
}
Takeaways 
▸ Angular helps deliver the future now 
▸ Frameworks will always be ahead of the web 
▸ Libs/frameworks help sculpt the future 
▸ Where next? See you there!
Thank you 
@toddmotto 
speakerdeck.com/toddmotto

Contenu connexe

Tendances

Yes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayYes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayChristian Heilmann
 
RESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsRESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsSven Wolfermann
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in RailsBenjamin Vandgrift
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5Todd Anderson
 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015Matt Raible
 
Илья Пухальский (EPAM Systems)
Илья Пухальский (EPAM Systems)Илья Пухальский (EPAM Systems)
Илья Пухальский (EPAM Systems)Ontico
 
CSS3 Takes on the World
CSS3 Takes on the WorldCSS3 Takes on the World
CSS3 Takes on the WorldJonathan Snook
 
Mozilla Brick - Frontend Rhein-Main June 2014
Mozilla Brick - Frontend Rhein-Main June 2014Mozilla Brick - Frontend Rhein-Main June 2014
Mozilla Brick - Frontend Rhein-Main June 2014Carsten Sandtner
 
Drush - use full power - DrupalCamp Donetsk 2014
Drush - use full power - DrupalCamp Donetsk 2014Drush - use full power - DrupalCamp Donetsk 2014
Drush - use full power - DrupalCamp Donetsk 2014Alex S
 
Desenvolvimento web com Ruby on Rails (parte 6)
Desenvolvimento web com Ruby on Rails (parte 6)Desenvolvimento web com Ruby on Rails (parte 6)
Desenvolvimento web com Ruby on Rails (parte 6)Joao Lucas Santana
 
Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Adam Lu
 
HTML5 and Mobile
HTML5 and MobileHTML5 and Mobile
HTML5 and Mobiledoodoofish
 
Chrome enchanted 2015
Chrome enchanted 2015Chrome enchanted 2015
Chrome enchanted 2015Chang W. Doh
 
Introduction to Vue.js
Introduction to Vue.jsIntroduction to Vue.js
Introduction to Vue.jsMeir Rotstein
 
ChocolateChip-UI
ChocolateChip-UIChocolateChip-UI
ChocolateChip-UIGeorgeIshak
 
Canvas
CanvasCanvas
CanvasRajon
 

Tendances (20)

JQuery UI
JQuery UIJQuery UI
JQuery UI
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Yes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayYes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at Jayway
 
RESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsRESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side Components
 
Survey of Front End Topics in Rails
Survey of Front End Topics in RailsSurvey of Front End Topics in Rails
Survey of Front End Topics in Rails
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5
 
Rails3 asset-pipeline
Rails3 asset-pipelineRails3 asset-pipeline
Rails3 asset-pipeline
 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
 
Илья Пухальский (EPAM Systems)
Илья Пухальский (EPAM Systems)Илья Пухальский (EPAM Systems)
Илья Пухальский (EPAM Systems)
 
CSS3 Takes on the World
CSS3 Takes on the WorldCSS3 Takes on the World
CSS3 Takes on the World
 
Borrador del blog
Borrador del blogBorrador del blog
Borrador del blog
 
Mozilla Brick - Frontend Rhein-Main June 2014
Mozilla Brick - Frontend Rhein-Main June 2014Mozilla Brick - Frontend Rhein-Main June 2014
Mozilla Brick - Frontend Rhein-Main June 2014
 
Drush - use full power - DrupalCamp Donetsk 2014
Drush - use full power - DrupalCamp Donetsk 2014Drush - use full power - DrupalCamp Donetsk 2014
Drush - use full power - DrupalCamp Donetsk 2014
 
Desenvolvimento web com Ruby on Rails (parte 6)
Desenvolvimento web com Ruby on Rails (parte 6)Desenvolvimento web com Ruby on Rails (parte 6)
Desenvolvimento web com Ruby on Rails (parte 6)
 
Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)
 
HTML5 and Mobile
HTML5 and MobileHTML5 and Mobile
HTML5 and Mobile
 
Chrome enchanted 2015
Chrome enchanted 2015Chrome enchanted 2015
Chrome enchanted 2015
 
Introduction to Vue.js
Introduction to Vue.jsIntroduction to Vue.js
Introduction to Vue.js
 
ChocolateChip-UI
ChocolateChip-UIChocolateChip-UI
ChocolateChip-UI
 
Canvas
CanvasCanvas
Canvas
 

Similaire à AngularJS Bridge Between Today and Tomorrow's Web

Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript FrameworkAll Things Open
 
ESRI Dev Meetup: Building Distributed JavaScript Map Widgets
ESRI Dev Meetup: Building Distributed JavaScript Map WidgetsESRI Dev Meetup: Building Distributed JavaScript Map Widgets
ESRI Dev Meetup: Building Distributed JavaScript Map WidgetsAllan Glen
 
Angular directive filter and routing
Angular directive filter and routingAngular directive filter and routing
Angular directive filter and routingjagriti srivastava
 
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3Five Pound App talk: hereit.is, Web app architecture, REST, CSS3
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3Jamie Matthews
 
The Future of CSS with Web components
The Future of CSS with Web componentsThe Future of CSS with Web components
The Future of CSS with Web componentsdevObjective
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web ComponentsColdFusionConference
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScriptersgerbille
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoRob Bontekoe
 
Architecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouterArchitecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouterChristopher Caplinger
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)Oswald Campesato
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Eliran Eliassy
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebJames Rakich
 
Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015Fastly
 

Similaire à AngularJS Bridge Between Today and Tomorrow's Web (20)

Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Test upload
Test uploadTest upload
Test upload
 
ESRI Dev Meetup: Building Distributed JavaScript Map Widgets
ESRI Dev Meetup: Building Distributed JavaScript Map WidgetsESRI Dev Meetup: Building Distributed JavaScript Map Widgets
ESRI Dev Meetup: Building Distributed JavaScript Map Widgets
 
Angular directive filter and routing
Angular directive filter and routingAngular directive filter and routing
Angular directive filter and routing
 
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3Five Pound App talk: hereit.is, Web app architecture, REST, CSS3
Five Pound App talk: hereit.is, Web app architecture, REST, CSS3
 
HTML5 Essentials
HTML5 EssentialsHTML5 Essentials
HTML5 Essentials
 
Introduction to angular js
Introduction to angular jsIntroduction to angular js
Introduction to angular js
 
The Future of CSS with Web components
The Future of CSS with Web componentsThe Future of CSS with Web components
The Future of CSS with Web components
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web Components
 
Webgl para JavaScripters
Webgl para JavaScriptersWebgl para JavaScripters
Webgl para JavaScripters
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Architecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouterArchitecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouter
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
Google Maps API 101
Google Maps API 101Google Maps API 101
Google Maps API 101
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
Web Components
Web ComponentsWeb Components
Web Components
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the Web
 
Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015Design & Performance - Steve Souders at Fastly Altitude 2015
Design & Performance - Steve Souders at Fastly Altitude 2015
 

Plus de Future Insights

The Human Body in the IoT. Tim Cannon + Ryan O'Shea
The Human Body in the IoT. Tim Cannon + Ryan O'SheaThe Human Body in the IoT. Tim Cannon + Ryan O'Shea
The Human Body in the IoT. Tim Cannon + Ryan O'SheaFuture Insights
 
Pretty pictures - Brandon Satrom
Pretty pictures - Brandon SatromPretty pictures - Brandon Satrom
Pretty pictures - Brandon SatromFuture Insights
 
Putting real time into practice - Saul Diez-Guerra
Putting real time into practice - Saul Diez-GuerraPutting real time into practice - Saul Diez-Guerra
Putting real time into practice - Saul Diez-GuerraFuture Insights
 
Surviving the enterprise storm - @RianVDM
Surviving the enterprise storm - @RianVDMSurviving the enterprise storm - @RianVDM
Surviving the enterprise storm - @RianVDMFuture Insights
 
Exploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongExploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongFuture Insights
 
A Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyA Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyFuture Insights
 
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnHorizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnFuture Insights
 
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Future Insights
 
Front End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFront End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFuture Insights
 
Structuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzStructuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzFuture Insights
 
Cinematic UX, Brad Weaver
Cinematic UX, Brad WeaverCinematic UX, Brad Weaver
Cinematic UX, Brad WeaverFuture Insights
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookFuture Insights
 
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisFuture Insights
 
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionAccessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionFuture Insights
 
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Future Insights
 
Designing for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanDesigning for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanFuture Insights
 
Beyond Measure, Erika Hall
Beyond Measure, Erika HallBeyond Measure, Erika Hall
Beyond Measure, Erika HallFuture Insights
 
Real Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonReal Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonFuture Insights
 
Ok Computer. Peter Gasston
Ok Computer. Peter GasstonOk Computer. Peter Gasston
Ok Computer. Peter GasstonFuture Insights
 
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaDigital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaFuture Insights
 

Plus de Future Insights (20)

The Human Body in the IoT. Tim Cannon + Ryan O'Shea
The Human Body in the IoT. Tim Cannon + Ryan O'SheaThe Human Body in the IoT. Tim Cannon + Ryan O'Shea
The Human Body in the IoT. Tim Cannon + Ryan O'Shea
 
Pretty pictures - Brandon Satrom
Pretty pictures - Brandon SatromPretty pictures - Brandon Satrom
Pretty pictures - Brandon Satrom
 
Putting real time into practice - Saul Diez-Guerra
Putting real time into practice - Saul Diez-GuerraPutting real time into practice - Saul Diez-Guerra
Putting real time into practice - Saul Diez-Guerra
 
Surviving the enterprise storm - @RianVDM
Surviving the enterprise storm - @RianVDMSurviving the enterprise storm - @RianVDM
Surviving the enterprise storm - @RianVDM
 
Exploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongExploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny Tong
 
A Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyA Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher Murphy
 
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnHorizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
 
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
 
Front End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFront End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon Deaner
 
Structuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzStructuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean Lorenz
 
Cinematic UX, Brad Weaver
Cinematic UX, Brad WeaverCinematic UX, Brad Weaver
Cinematic UX, Brad Weaver
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan Snook
 
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
 
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionAccessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
 
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
 
Designing for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanDesigning for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew Zusman
 
Beyond Measure, Erika Hall
Beyond Measure, Erika HallBeyond Measure, Erika Hall
Beyond Measure, Erika Hall
 
Real Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonReal Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur Thorleifsson
 
Ok Computer. Peter Gasston
Ok Computer. Peter GasstonOk Computer. Peter Gasston
Ok Computer. Peter Gasston
 
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaDigital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
 

Dernier

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Dernier (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

AngularJS Bridge Between Today and Tomorrow's Web

  • 1. AngularJS THE BRIDGE BETWEEN TODAY AND tomorrow's WEB
  • 3. A look at the web ▸ Yesterday, where we came from ▸ Tomorrow, where we’re headed ▸ Today, what’s available ▸ Angular, today ▸ Angular, tomorrow
  • 5. <TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"> <TR> <TD COLSPAN="3">Oh my!</TD> </TR> </TABLE>
  • 7. <center> <font size="4">Awesome letters</font> </center>
  • 9. <img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap"> <map name="planetmap"> <area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun"> <area shape="circle" coords="90,58,3" href="mercur.htm" alt="Mercury"> <area shape="circle" coords="124,58,8" href="venus.htm" alt="Venus"> </map>
  • 10.
  • 11.
  • 12. Where are we now?
  • 13.
  • 14. ▸ <video>, <audio> ▸ WebGL,<canvas> ▸ getUserMedia ▸ Geolocation (kinda) ▸ Fullscreen API ▸ WebSockets
  • 15. ▸ local and session storage ▸ History API ▸ Indexed DB ▸ Web SQL (kinda) ▸ Native form validation (required, email etc) ▸ FormData
  • 16. ▸ Dataset (custom data-*) ▸ HTML5 semantics ▸ File/FileReader API ▸ classList API ▸ Drag and drop ▸ postMessage ▸ contenteditable
  • 17. And breathe. HTML5 is huge.
  • 18. To make things even more difficult for us...
  • 19. Frameworks and Model- View-Whatever
  • 20. ▸ Angular ▸ Backbone ▸ Ember ▸ Knockout ▸ React
  • 22. We're still missing stuff! ▸ Templates/Encapsulation/Components ▸ Two-way data binding/Model data ▸ Promises and Class-like components ▸ Modules ▸ Dependency Injection (DI)
  • 23. So where are we going?
  • 24. Incoming... ▸ Web Components (HTML5) ▸ Object.observe (ES7) ▸ Native Promises (ES6) ▸ Modules (ES6) ▸ Classes (ES6)
  • 26. Web Components: Custom Elements <google-map latitude="37.77493" longitude="-122.41942"> <google-map-marker latitude="37.779" longitude="-122.3892" title="Go Giants!"></google-map-marker> </google-map>
  • 28. Web Components: Templates <template id="google-map"> <style> :host { position: relative; } #map { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } </style> <div class="map"> <div id="map"></div> </div> </template>
  • 30. Web Components: Shadow DOM ▾<google-map latitude="37.77493" longitude="-122.41942"> ▾#shadow-root (user-agent) <div class="map"> <div id="map"> <canvas class="map"></canvas> </div> </div> </google-map>
  • 32. Web Components: HTML Imports <link rel="import" href="../components/google-map.html">
  • 34. ES7: Object.observe() // html5rocks.com/en/tutorials/es7/observe // Let's say we have a model with data var model = {}; // Which we then observe Object.observe(model, function(changes){ // This asynchronous callback runs changes.forEach(function(change) { // Letting us know what changed console.log(change.type, change.name, change.oldValue); }); });
  • 36. ES6: Promises // html5rocks.com/en/tutorials/es6/promises var promise = new Promise(function(resolve, reject) { if (/* everything turned out fine */) { resolve('Stuff worked!'); } else { reject(Error('It broke')); } }); promise.then(function (result) { console.log(result); // "Stuff worked!" }, function(err) { console.log(err); // Error: "It broke" });
  • 38. ES6: Modules // 2ality.com/2014/09/es6-modules-final.html //------ lib.js ------ export const sqrt = Math.sqrt; export function square(x) { return x * x; } export function diag(x, y) { return sqrt(square(x) + square(y)); } //------ main.js ------ import { square, diag } from 'lib'; console.log(square(11)); // 121 console.log(diag(4, 3)); // 5
  • 40. ES6: Classes // javascriptplayground.com/blog/2014/07/introduction-to-es6-classes-tutorial class Model { constructor (properties) { this.properties = properties; } toObject() { return this.properties; } }
  • 43. Angular: Custom Elements <google-map latitude="37.77493" longitude="-122.41942"> <google-map-marker latitude="37.779" longitude="-122.3892" title="Go Giants!"></google-map-marker> </google-map>
  • 45. Angular: Templates function googleMap () { return { scope: { longitude: '=', latitude: '=' }, template: [ '<div class="map">', '<div id="map"></div>', '</div>', ].join('') }; } angular .module('app') .directive('googleMap', googleMap);
  • 47. Angular: "Shadow DOM" <google-map latitude="37.77493" longitude="-122.41942"> <div class="map"> <div id="map"> <canvas class="map"></canvas> </div> </div> </google-map>
  • 49. Angular: HTML Imports function googleMap () { return { scope: { longitude: '=', latitude: '=' }, templateUrl: '../google-map.html' }; } angular .module('app') .directive('googleMap', googleMap);
  • 51. Angular: $scope.$watch function MainCtrl ($scope) { $scope.$watch('model', function (newVal, oldVal) { // }); } angular .module('app') .directive('MainCtrl', MainCtrl);
  • 53. Angular: Promises $http .get('/someurl') .then(function (response) { // :) }, function (reason) { // :( });
  • 54. Above and beyond specs BUILDING ON TOP OF THE WEB PLATFORM
  • 55. Angular: Dependency Injection function MainCtrl ($scope, $rootScope) { } angular .module('app') .controller('MainCtrl', MainCtrl);
  • 56. Angular: Declarative bindings <!-- ng-* --> <div ng-controller="UserCtrl as vm"> <h1 ng-bind="vm.title"></h1> <a href="" ng-click="vm.getUsers();">Get users</a> </div>
  • 57. Angular: DOM creation/destruction <ul> <li ng-repeat="user in vm.users"></li> </ul>
  • 58. Angular: JS Objects as DOM <input type="text" ng-model="vm.someModel"> <p>{{ vm.someModel }}</p> <!-- Maps across input value to Object $scope.vm.someModel -->
  • 59. Angular: Expressions <p>{{ user.name }} | ({{ user.notifications.length }})</p> <!-- <p>Todd | (2)</p> -->
  • 60. Angular: Automated events <li ng-repeat="user in vm.users"> <a href="" ng-click="vm.composeEmail()"> Compose email </a> </li>
  • 61. Angular: Component lifecycles ▸ Automatic event binding/unbinding ▸ Creation/destruction of DOM and ($scope) Model data ▸ ng-ifs, DOM stored in memory
  • 62. Angular: Routing function Router ($routeProvider, $locationProvider) { $routeProvider.when('/inbox', { templateUrl: 'views/mailbox.html', controller: 'InboxCtrl as vm', resolve: InboxCtrl.resolve }).when('/email/:id', { templateUrl: 'views/email.html', controller: 'EmailCtrl as vm', resolve: EmailCtrl.resolve }).otherwise({ redirectTo: 'inbox' }); }; angular .module('app') .config(Router);
  • 63. Angular: Modular JavaScript angular .module('app', [ 'ngRoute', 'Auth', 'growl' ]);
  • 64. Angular: Form validation <form name="authForm" ng-submit="vm.submitForm();"> </form> <!-- authForm.$pristine authForm.$dirty authForm.$invalid authForm.$valid authForm.$error -->
  • 65. Where next for Angular? 2.0 DRIVE: BIT.LY/ZHQT1Q
  • 66. Angular 2.0: Faster change detection ES6 Port of Angular.dart change detection github.com/angular/watchtower.js
  • 67. Angular 2.0: Template engine github.com/angular/templating @ComponentDirective({ selector: 'tab-container', observe: { 'tabs[]': 'tabsChanged' }, shadowDOM: true })
  • 68. Angular 2.0: Data persistence ▸ ngWebSocket ($ngWebSocket) ▸ ngStore ($localStorage, $localDB) ▸ ngOffline ($serviceWorker, $connection) ▸ ngData (Models, IAdapter, ChangeEvent) ▸ ngHttp (low-mid level APIs)
  • 69. Angular 2.0: Annotations // reduces boilerplate and hides angular wireframe @Provide(Heater) export class MockHeater { constructor() {} on() { console.log('Turning on the MOCK heater...'); } off() {} }
  • 70. Takeaways ▸ Angular helps deliver the future now ▸ Frameworks will always be ahead of the web ▸ Libs/frameworks help sculpt the future ▸ Where next? See you there!
  • 71. Thank you @toddmotto speakerdeck.com/toddmotto