Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Angular 2.0 - What to Expect?
Search
Allan Marques Baptista
January 15, 2015
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Angular 2.0 - What to Expect?
A talk from a GDG meeting at Rio de Janeiro, Brazil.
Allan Marques Baptista
January 15, 2015
More Decks by Allan Marques Baptista
See All by Allan Marques Baptista
Hybrid Apps - From web to mobile without pain
m4n3z40
0
58
Other Decks in Programming
See All in Programming
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
Railsバージョンを4倍にした話
optim
0
360
Jetpack Compose Mechanisms
skydoves
3
820
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Leo the Paperboy
mayatellez
10
2.4k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Exploring anti-patterns in Rails
aemeredith
4
540
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Discover your Explorer Soul
emna__ayadi
2
1.3k
Visualization
eitanlees
153
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Facilitating Awesome Meetings
lara
57
7.2k
Transcript
Angular 2.0 What to expect?
Who is Allan Baptista?
Mobile Developer Hotel Urbano Participated on the latest desktop’s home
re-design Currently working on the 2.0 App for WP. M. Site’s Creator //WhoisAllanBaptista?
//WhoisAllanBaptista? Mobile Developer Hotel Urbano PHP HTML CSS JS Python
Ruby NodeJS Mobile Platforms
Who is Allan Baptista? Why 2.0?
ANGULAR //Why2.0 THEWEBIS AT A RIDICULOUS changing PACE HASGOTTOKEEPUP ES6
ES7
WTF is atScript?
//WTFisatScript? ES6 Type annotations Field annotations Metadata annotations Type introspection
+ + + +
import {Component} from 'angular'; import {Server} from './server'; @Component({selector: 'foo'})
export class MyComponent { constructor(server:Server) { this.server = server; } } import * as rtts from 'rtts'; import {Component} from 'angular'; import {Server} from './server'; export class MyComponent { constructor(server) { rtts.types(server, Server); this.server = server; } } MyComponent.parameters = [{is:Server}]; MyComponent.annotate = [ new Component({selector: 'foo'}) ]; ATSCRIPT AFTERCOMPILED //WTFisatScript?
Dependency Injection
scope management (all instances are singleton) someModule.controller('MyController', function($scope, greeter) {
// ... }); // or... angular.module('myModule', []) .factory('serviceId', ['depService', function(depService) { // ... }]) .directive('directiveName', ['depService', function(depService) { // ... }]) .filter('filterName', ['depService', function(depService) { // ... }]); // or... var MyController = function($scope, greeter) { // ... } MyController.$inject = ['$scope', 'greeter']; someModule.controller('MyController', MyController); //DependencyInjection PRESENT KNOWNPROBLEM
Enables a unique instance for every injection Providers, Lazy Injection,
Async Injections import {Component} from 'angular'; import {Server} from './server'; @Component({selector: 'foo'}) export class MyComponent { constructor(server:Server) { this.server = server; } } @TransientScope export class MyClass { ... } //DependencyInjection FUTURE ANDMORE
Components & Databinding
The Directive Definition Object (DDO) is awfully confusing and hard
to learn. angular.module('docsTabsExample', []) .directive('myPane', function() { return { require: ['^myTabs', '^ngModel'], restrict: 'E', transclude: true, scope: { title: '@' }, link: function(scope, element, attrs, controllers) { var tabsCtrl = controllers[0], modelCtrl = controllers[1]; tabsCtrl.addPane(scope); }, templateUrl: 'my-pane.html' }; }); <my-pane></my-pane> //Components&Databinding PRESENT KNOWNPROBLEM
//Components&Databinding FUTURE @ComponentDirective Creates a custom component composed of a
view and a controller. @DecoratorDirective Decorates an existing HTML element with additional behavior. @TemplateDirective Transforms HTML into a reusable template.
@ComponentDirective({ selector:'tab-container', directives:[NgRepeat] }) export class TabContainer { constructor(panes:Query<Pane>) {
this.panes = panes; } select(selectedPane:Pane) { //... } } <template> <div class="border"> <div class="tabs"> <div [ng-repeat|pane]="panes" class="tab" (^click)="select(pane)"> <img [src]=“pane.icon"> <span>${pane.name}</span> </div> </div> <content></content> </div> </template> //Components&Databinding @ComponentDirective
@DecoratorDirective({ selector:'[ng-show]', bind: { 'ngShow': 'ngShow' }, observe: {'ngShow': 'ngShowChanged'}
}) export class NgShow { constructor(element:Element) { this.element = element; } ngShowChanged(newValue){ if(newValue){ this.element.style.display = 'block'; }else{ this.element.style.display = 'none'; } } } //Components&Databinding @DecoratorDirective
@TemplateDirective({ selector: '[ng-if]', bind: {'ngIf': 'ngIf'}, observe: {'ngIf': 'ngIfChanged'} })
export class NgIf { constructor(viewFactory:BoundViewFactory, viewPort:ViewPort) { this.viewFactory = viewFactory; this.viewPort = viewPort; this.view = null; } ngIfChanged(value) { if (!value && this.view) { this.view.remove(); this.view = null; } if (value) { this.view = this.viewFactory.createView(); this.view.appendTo(this.viewPort); } } } //Components&Databinding @TemplateDirective
The Router
No flexibility. phonecatApp.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/phones', { templateUrl: 'partials/phone-list.html',
controller: 'PhoneListCtrl' }). when('/phones/:phoneId', { templateUrl: 'partials/phone-detail.html', controller: 'PhoneDetailCtrl' }). otherwise({ redirectTo: '/phones' }); }]); //TheRouter PRESENT KNOWNPROBLEM
? • Configuration/Conventions • 404 Handling • History Manipulation •
Navigation Model • Document Title Updates • hashChange/pushState • Dynamic Loading • Child Apps • Screen Activation ◦TO: canActivate => activate ◦FROM: canDeactivate => deactivate //TheRouter PRESENT IMPLEMENTEDFEATURES
What about structure, scaffolding, build, testing, best practices?
Nothing yet :(
Who is Allan Baptista? Contacts
//Contacts @m4n3z40 @NeverFunnyGuy fb.me/allan.baptista linkedin.com/in/allanbaptista
[email protected]
Who is Allan Baptista? Sources
• http://eisenbergeffect.bluespire.com/all-about-angular-2-0/ • https://docs.google.com/document/d/ 1kpuR512G1b0D8egl9245OHaG0cFh0ST0ekhD_g8sxtI/edit?usp=sharing • https://github.com/angular/angular/issues/133 • https://www.youtube.com/watch?v=h1P_Vh4gSQY •
https://www.youtube.com/watch? v=gNmWybAyBHI&list=UUEGUP3TJJfMsEM_1y8iviSQ • https://www.youtube.com/watch?v=g- x1QKriY90&list=UUEGUP3TJJfMsEM_1y8iviSQ //Sources