SlideShare a Scribd company logo
Keynote
September 27, 2016
Jules Kremer
@jules_kremer
Miško Hevery
@mhevery
Stephen Fluin
@stephenfluin
One framework
Mobile & desktop
Angular 2.0.0
Source: State of Octoverse 2016
Contributors
1
0.5
0
Angular 1
Oct 2015
Angular 1
Sept 2016
Angular 2
Sept 2016
1.1M
1.2M
623k
Based on 30-day active visitors to Angular docs
Community Size
Angular
2 0 0. .
Major . Minor . Patch
Incompatible
Changes
Backwards
Compatible
Bug Fixes
semver.org
STABLE
EXPERIMENTAL
20172016
2.0 3.0 4.0
Stability
Major Release Cycle
Declarative Templating
Change Detection
Dependency Injection
Component Model
Ahead-of-Time Compilation
DOM Independence
Angular Core
Angular Material
i18n
Router
Forms
Animations
ngUpgrade
Left
Nav
Top Nav
Main View
Angular Extensions
Angular CLI
by
Angular Augury Language Services
Developer Tools
Protractor
angular.io/docs
Miško Hevery
Miško Hevery
@mhevery
Performance
Performance
is not a single number
First Time
Render
Change
Detection
Smaller
Lazy
Multi
Threaded
Do Less
HTML
CSS
@Ann
HTML
Compiler &
Expression
Parser
DI Runtime
View
Runtime
Change
detection
Runtime
Your Application
Renderer
Interpreted
CD / View
Build Step
HTML
CSS
@Ann
HTML
Compiler &
Expression
Parser
DI Runtime
View
Runtime
Change
detection
Runtime
Your Application
Renderer
Generated
CD / View
Offline
compile
Inline
modules
Tree-shake Minify
@Component({
template: 'Hello {{name}}!'
})
class Greeter {
name: string = 'World';
}
while(r) {
var v=r.obj[r.prop];
if(v!=r.last) {
r.node.textContent
= r.last = v;
}
r = r.next;
}
MyAppModule
Template
Pipes
Providers
Template
Component
Pipes
Pipes
Providers
Providers
BrowserModule
MaterialModule
...Module
ElementElement
RouterComponent
NgModule
Lazy Loading
BoundaryNgModule
ElementElement
Component
Platform
Smaller
Lazy
Multi
Threaded
Do Less
@Component({
template: 'Hello {{name}}!'
})
class Greeter {
name: string = 'World';
}
while(r) {
var v=r.obj[r.prop];
if(v!=r.last) {
r.node.textContent
= r.last = v;
}
r = r.next;
}
var last_name;
var v = ctx.name;
if(v!=last_name){
nameTextNode
.textContent
= last_name
= v;
}
var ctx: Greeter = ...;
var last_name: typeof ctx.name;
var v: typeof ctx.name = ctx.name;
if (v != last_name) {
...
}
es6_bundle.min.js:2 Uncaught EXCEPTION: Error in app.html:1:5
es6_bundle.min.js:6 Error: OH NOES
at t.Object.defineProperty.get [as name] (es6_bundle.min.js:7)
at HelloWorldFactory.detectChangesInternal (es6_bundle.min.js:8)
...
1 <div
2 tabIndex="1"
3 [label]="hint"
4 (slide)="doSomething()">
5 </span>
Single Pass (/w dev-mode check)
Top to bottom data flow
CheckAlways
Detached
OnPush
OnDirty
(Before/After)ChildInit
(Before/After)ChildChecked
(Before/After)ContentInit
(Before/After)ContentChecked
Change
Detection
Data
Structures
Build Step
HTML
CSS
@Ann
HTML
Compiler &
Expression
Parser
DI Runtime
View
Runtime
Change
detection
Runtime
Your Application
Renderer
Generated
CD / View
Serialize RendererDeserialize
● Application Logic
● XHR
● Rendering
● Animations
Benchpress
Execution Time
Render Time
GC Pressure
Update Speed
Ben Dilts
Co-founder & CTO
Ryan Stringham
Senior Engineer
Angular 2 Lead
One of the first rich graphical applications on the web
Hand-written Javascript (ES5)
Why Angular 2?
<div class="input-wrapper" lucid-callout>
<input
#dateInput
class="date-input"
type="text"
[value]="value | date:'MM/dd/yy'"
(change)="setDate(dateInput.value)"
[class.error]="dateError"
/>
...
Why Angular 2?
.input-wrapper {
display:inline-block;
}
.date-input {
width:60px;
}
...
Why Angular 2?
describe('lucid.view.ng2.common.input.ToggleButton', () => {
it('should turn on and off when clicked', ...)
it('should be neither on or off when invalid', ...)
it('should be neither on or off when disabled', ...)
it('should be able to use non-boolean values', ...)
...
Now: Everything but the WebGL canvas is built in Angular 2
templateUrl: './gui.html',
providers: [
MenuItems,
MenuBarItems,
],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class GUI {
Huge win over Angular 1: Change detection
Runtime template compiler
Ahead-of-time template compiler
Angular 2 editor Legacy editor
AOT
compiler
Ahead-of-time template compiler
AOT
compiler
Closure advanced
compilation
Ahead-of-time template compiler
Angular 2 editor Legacy editor
AOT
compiler
Closure advanced
compilation
27KB Hello
World App!
Ahead-of-time template compiler
Angular 2 editor Legacy editor
lucidchart.com/ac2016
Stephen Fluin
@stephenfluin
Stephen Fluin
Angular
Angular Everywhere
Mobile Scenarios
Performance matters more on Mobile
70% of web usage in many cases
Mobile Scenarios
Desktop Scenarios
File system & feature integrations
Many people use desktop
applications every day
Scenarios
Progressive Web Apps Mobile Desktop
PWA
Server Scenarios
NPR One
Nara Kasbergen
@xiehan
NPR Developer Blog @ https://npr.codes
Angular
n.pr/aboutone
Angular
Our team proposed
using Angular 2 for
the rebuild of the
webapp.
We had the rare opportunity to start a project from scratch, which
opened up our options
The "all-in-one" nature fit well with our project as a self-contained unit,
separate from NPR.org
As a team with no embedded QA resource, a high level of test
coverage was critical
Why we picked Angular 2
January 31, 2016
Initial commit for the new NPR One webapp
Angular 2 is in beta2
March 31, 2016
Official launch of the new NPR One webapp
Angular 2 is in beta13
Angular
100%unit test coverage
end-to-end tests
using Protractor (protractortest.org)
Angular
We had a
hypothesis
React and Angular 2 share many of
the same core ideas
There is a place in every team's
stack for both
We used ES6 instead of TypeScript
We added Redux-like state management functionality
using the plugin @ngrx/store
github.com/ngrx/store
The React developers have been able to participate
fully in all of our code reviews
Our hypothesis was correct
"Is Angular 2 ready
for production?"
Check out
one.npr.org &
decide for yourself.
Angular
Data
GraphQL Real-time ngrx/store ngRedux
Apollo & GraphQL
Uri Goldshtein
@urigoldshtein
github.com/urigo
All the performance we need
Angular
Angular
Network Latency
Network Latency
Optimistic UI
Optimistic UI
Optimistic UI
Angular
Caching results and Preloading
Caching results and Preloading
API Documentation
Multiple round trips and complex joins on the client
Server developers decide on how the API would look
Dependency on the server
API problems
Make everything feel instant (Optimistic UI)
Small, Open, Client Only, Integrated Gradually
Pluggable Immutable Local Cache (Redux, RxJS)
Modern Data Protocol - GraphQL
Apollo - Network Data Management Library
GraphQL
Client asks for and
gets exactly what
it needs
GraphQL
GraphQL
Multiple resources
in single request
GraphQL
Typed API
GraphQL
Server
Template
Template
UI Components
Angular
A Platform Ecosystem
Contributors
Thank You

More Related Content

PPTX
PDF
Angular - Chapter 3 - Components
PPTX
Angular Data Binding
PPTX
Angular 9
PPT
Angular Introduction By Surekha Gadkari
PPTX
Angular overview
PDF
Angular Observables & RxJS Introduction
PPTX
Angular - Chapter 3 - Components
Angular Data Binding
Angular 9
Angular Introduction By Surekha Gadkari
Angular overview
Angular Observables & RxJS Introduction

What's hot (20)

PPTX
Sharing Data Between Angular Components
PPTX
Angularjs PPT
PDF
Angular Directives
PDF
Angular - Chapter 4 - Data and Event Handling
PDF
Basics of JavaScript
PDF
React js
PPTX
React JS: A Secret Preview
PPTX
What’s New in Angular 14?
PPTX
Introduction to react_js
PPTX
Introduction to React JS for beginners | Namespace IT
PDF
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
PDF
introduction to Vue.js 3
PDF
Angular - Chapter 7 - HTTP Services
PPTX
Introduction to Angularjs
PDF
PDF
Angular directives and pipes
PPTX
ASP.NET MVC Presentation
PPTX
Its time to React.js
PPTX
Intro to React
Sharing Data Between Angular Components
Angularjs PPT
Angular Directives
Angular - Chapter 4 - Data and Event Handling
Basics of JavaScript
React js
React JS: A Secret Preview
What’s New in Angular 14?
Introduction to react_js
Introduction to React JS for beginners | Namespace IT
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
introduction to Vue.js 3
Angular - Chapter 7 - HTTP Services
Introduction to Angularjs
Angular directives and pipes
ASP.NET MVC Presentation
Its time to React.js
Intro to React
Ad

Similar to Angular (20)

PPTX
Angular 2 On Production (IT Talk in Dnipro)
PDF
Angular, the New Angular JS
PDF
Angular v2 et plus : le futur du développement d'applications en entreprise
PPTX
PDF
New World of Angular (v2+)
PDF
Angular (v2 and up) - Morning to understand - Linagora
ODP
Angular 6 - The Complete Guide
PDF
Adventures with Angular 2
PPTX
Angular 2.0
PDF
Angular2 tutorial
PDF
Angular 2 - How we got here?
PDF
Angular 4 Tutorial For Beginners | Angular 4 Introduction | Angular 4 Trainin...
PDF
Angular 2 overview
PDF
Angular 2 Crash Course
PDF
Brief introduction to Angular 2.0 & 4.0
PDF
Angular js
PDF
Angular js
PPTX
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
PDF
React vs angular
PPTX
Angular 2 with typescript
Angular 2 On Production (IT Talk in Dnipro)
Angular, the New Angular JS
Angular v2 et plus : le futur du développement d'applications en entreprise
New World of Angular (v2+)
Angular (v2 and up) - Morning to understand - Linagora
Angular 6 - The Complete Guide
Adventures with Angular 2
Angular 2.0
Angular2 tutorial
Angular 2 - How we got here?
Angular 4 Tutorial For Beginners | Angular 4 Introduction | Angular 4 Trainin...
Angular 2 overview
Angular 2 Crash Course
Brief introduction to Angular 2.0 & 4.0
Angular js
Angular js
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs angular
Angular 2 with typescript
Ad

Recently uploaded (20)

PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
ai tools demonstartion for schools and inter college
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
AI in Product Development-omnex systems
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
medical staffing services at VALiNTRY
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Softaken Excel to vCard Converter Software.pdf
ai tools demonstartion for schools and inter college
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Odoo Companies in India – Driving Business Transformation.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Online Work Permit System for Fast Permit Processing
VVF-Customer-Presentation2025-Ver1.9.pptx
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Odoo POS Development Services by CandidRoot Solutions
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
AI in Product Development-omnex systems
L1 - Introduction to python Backend.pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Design an Analysis of Algorithms I-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
How Creative Agencies Leverage Project Management Software.pdf
medical staffing services at VALiNTRY

Angular