SlideShare une entreprise Scribd logo
1  sur  80
Building a TV Show
with Angular, Bootstrap, and Web Services
David Giard
• Senior Technical Evangelist, Microsoft
• @DavidGiard
• davidgiard.com
• dgiard@Microsoft.com
• channel9.msdn.com/blogs/technology-and-friends
Links
• channel9.msdn.com/blogs/technology-and-friends
• angular.io/
• github.com/DavidGiard/dgtv
• tinyurl.com/dgtvslides
Single Page Applications
Traditional Web App
HTML Page
Click me!
Server
Request
Response
Thank you, David!
Single Page App
HTML Page
Click me!
Server
Request
Response
Thank you, David!
{‘
name’: ‘David’
}
Architecture
Web Service
Database
Web APIAngular 2
TypeScript
BootStrap
Single
Page
App
Function Tool
Web Service Web API
Database SQL Server
Single Page Application Angular 2 & TypeScript
Styling Bootstrap
Web API
Web API Routing
public class ValuesController : ApiController
{
public IEnumerable<string> Get() {…}
public string Get(int id) {…}
public void Post ([FromBody]string value) {… }
public void Put (int id, [FromBody]string value) {..}
public void Delete (int id) {…}
}
http://..../api/values
HTTP Verb
GET
POST
PUT
DELETE
Angular 2
and
TypeScript
Angular
• SPA Framework
• Open Source
• Data Binding
• Components
• Modularize
TypeScript
• Open Source
• Superset of JavaScript
• Transpiles to JavaScript
TypeScript
foo.ts foo.js
Transpile
foo.map
Transpile
TypeScript Transpiling
• Command Line: tsc or tsc -w
• Grunt, Gulp, etc.
• Visual Studio
TypeScript Advantages
• Productivity
• Static Type Analysis
• Language Tool Support
• Better management of large codebases
Type Checking
var num1 = 5;
var num2 = 10;
…
num2=“Fish”;
…
var sum = num1 + num2;
Type Checking
var num1: number = 5;
var num2 : number = 10;
…
num2=“Fish”;
…
var sum: number = num1 + num2;
tsconfig.json{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
typings.json
{
"ambientDependencies": {
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd",
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#5c182b9af717f73146399c2485f70f1e2ac0ff2b"
}
}
Angular 2
Key Parts of Angular
• Modules
• Components
• Templates
• Directives
• Services
• Routing
• Http
Modules
Modules
• Built into Angular 2
• Makes it easier to split code into smaller pieces
• Import one module into another
• Export module to make it available for import
Modules
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
Available
outside this
module
Use exported
module
In this module
Components
Components
• Class (properties & methods)
• Decorated with @Component
• Template
• Selector
• Imported references
Templates and Selectors
Templates and Selectors
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
Selector
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Templates
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
Loading…
Templates
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
Hello World
Templates: Multi-Line
<my-app>Loading...</my-app>
Output
Hello World
Welcome
@Component({
selector: 'my-app',
template: `
<h1>Hello World</h1>
<div>
Welcome!
</div>
`
})
export class AppComponent { }
Templates: External file
@Component({
selector: 'my-app',
templateurl: 'myApp.html'
})
export class AppComponent { }
<my-app>Loading...</my-app>
Output
<h1>Hello World</h1>
<div>
Welcome!
</div>
myApp.html
Hello World
Welcome
@Component({
selector: 'my-app',
templateurl: 'myApp.html'
})
export class AppComponent { }
Bootstrapping
<my-app>Loading...</my-app>
<script>
…
System.import('app')
</script>
import {AppComponent}
from './app.component';
bootstrap(AppComponent);
Main.ts
= bootstrap file
Directives
Directives
• Allow you to attach behavior to DOM elements
Directives
• *ngFor
• *ngIf
• ngSwitch
• ngClass
• Custom Directives
*ngfor
<div *ngFor="#cust of customers">
{{cust.lastName}}, {{cust.firstName}}
</div>
var customers: Customer[] = [
{ "id": 1, "firstName": "David", "lastName" : "Giard" },
{ "id": 2, "firstName": "Bill", "lastName": "Gates" },
{ "id": 3, "firstName": "Steve", "lastName": "Ballmer" },
{ "id": 4, "firstName": "Satya", "lastName": "Nadella" }
];
Giard, David
Gates, Bill
Ballmer, Steve
Nadella, Satya
*ngIf
• Syntax: *ngif="condition"
• Removes element from DOM if condition is not “truthy”
*ngIf
<div>
<button (click)="clicked()">Toggle</button>
<div *ngIf="show">
Can you see me?
</div>
</div>
export class AppComponent {
show: boolean = true;
clicked() {this.show = !this.show; }
}
Toggle
Can you see me?
*ngIf
<div>
<button (click)="clicked()">Toggle</button>
<div *ngIf="show">
Can you see me?
</div>
</div>
export class AppComponent {
show: boolean = true;
clicked() {this.show = !this.show; }
}
Toggle
Can you see me?
LifeCycle Hooks
• OnInit
• OnChanges
• OnDestroy
OnInit
export class foo implements OnInit {
...
ngOnInit(){
...
}
}
Services
Services
• Class containing logic
• Shared Code: Used by components or other services
• Substitutable Objects
• Dependency Injection
Services
import { Injectable } from '@angular/core';
@Injectable()
export class CustService {
getCustomers() {
return customers;
}
}
var customers: Customer[] = [
{ "id": 1, "firstname": "David", "lastname": "Giard" },
{ "id": 2, "firstname": "Bill", "lastname": "Gates" },
{ "id": 3, "firstname": "Steve", "lastname": "Ballmer" },
{ "id": 4, "firstname": "Satya", "lastname": "Nadella" }
];
CustomerService.ts
Services
import { Injectable } from '@angular/core';
@Injectable()
export class CustService {
getCustomers() {
return customers;
}
}
…
CustomerService.ts
import { OnInit } from '@angular/core';
import {CustService} from CustomerService
export class AppComponent implements OnInit {
ngOnInit() {
this.customers = this.customerService.getCustomers();
}
constructor(private customerService:CustService) { }
}
Data Binding
• Simple Binding
• One-Way Property Binding
• 2-Way Property Binding
• Event Binding
1-Way Data Binding
• Square brackets around property
• []
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged= true;
}
Save
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged = true;
}
Save
1-Way Data Binding
@Component({
selector: 'my-app',
template: ‘<button [disabled]=" dataNotChanged">Save</button>’
})
export class AppComponent {
dataNotChanged = false;
}
Save
1-Way Data Binding
• Double curly braces around data
• {{}}
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello World</h1>'
})
export class AppComponent {
id=1;
customerFirstName='David';
customerLastName='Giard';
}
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello {{customerFirstName}}</h1>'
})
export class AppComponent {
id=1;
customerFirstName='David';
customerLastName='Giard';
}
1-Way
Data Binding
Hello David
1-Way Data Binding
@Component({
selector: 'my-app',
template: '<h1>Hello {{customer.FirstName}}</h1>'
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
export class Customer{
FirstName: string;
LastName: string;
}
1-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: {{customer.FirstName}}</div>
<div>Last: {{customer.LastName}}
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
David Details
First: David
Last: Giard
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.FirstName" </div>
<div>Last: <input [(ngModel)]="customer.LastName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
2-way data binding
David Details
David
Giard
First:
Last:
1-way data binding
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
D Details
D
Giard
First:
Last:
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
Da Details
Da
Giard
First:
Last:
2-Way Data Binding
@Component({
selector: 'my-app',
template: `
<h1>{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
}
Dan Details
Dan
Giard
First:
Last:
Events binding
<control (eventname)="methodname(parameters)">
click event
<control (click)="methodtocall(parameters)">
e.g.,
<div (click)="onClick(customer)">
click
@Component({
selector: 'my-app',
template: `
<h1 (click)="onClick (customer)">{{customer.FirstName}} Details</h1>
<div>First: <input [(ngModel)]="customer.LastName" </div>
<div>Last: <input [(ngModel)]="customer.FirstName" </div>
`
})
export class AppComponent {
id=1;
customer: Customer = {
FirstName='David';
LastName='Giard';
}
onClick(cust: Customer) { alert ("You Selected " + customer.FirstName); }
}
Routing
Routing
• Load components dynamically into page
• Link via URL
• Client-side
• Step 1: Bootstrap array of routes
Routing
const routes: RouterConfig = [
{
path: 'foo',
component: FooComponent
},
{
path: 'bar',
component: BarComponent
},
];
export const appRouterProviders = [
provideRouter(routes)
];
import { appRouterProviders } from './app.routes';
bootstrap(
AppComponent, [
appRouterProviders
]);
<a [routerLink]="[/foo']">Foo</a>
<a [routerLink]="[/bar']">Bar</a>
<router-outlet></router-outlet>
app.routes.ts
main.ts
Bootstrap routes
User clicks “Foo” link
HTTP
HTTP
import {Http } from '@angular/http';
...
this.http.get(webServiceUrl);
bootstrap(AppComponent, [
HTTP_PROVIDERS,
]);
main.ts
Component
Observables
Observables
Observable<T>
Function
Subscribe
Data
Observables
getEpisodes(): Observable<IEpisode[]> {
return Observable.create((observer: Observer<any>) => {
…
observer.next(this.episodes);
})
}
this.episodeService.getEpisodes().subscribe((data) => {
…
}
More Architecture
Model
IEpisode
id: number
title: string
description: string
dateRecorded: string
dateReleased?: string
location: string
videoUrl: string
episodeNumber: number
guests: string[]
links?: ILink[]
ILink
url: string;
title: string;
guest
Components
episodeList.component
episode.component
episode.component
episode.component
episode.component
Routing
app.component
<router-outlet></router-outlet>
…/episodeList
…/episodeList/guest/John Smith
…/episodeList/location/Chicago, IL
episodeList.component
episode.component
episode.component
episode.component
episode.component
Routing
app.component
<router-outlet></router-outlet>
…/episodeDetails/425
episodeDetails.component
Service
getEpisodes()
episodes: IEpisode[];
allEpisodes: IEpisode[];
getEpisodes()
episodeList.component
episode.service
api/episode
Subscribes to
DEMO
Links
• channel9.msdn.com/blogs/technology-and-friends
• angular.io/
• github.com/DavidGiard/dgtv
• tinyurl.com/dgtvslides

Contenu connexe

Tendances

Tendances (20)

Vaadin 7.2
Vaadin 7.2Vaadin 7.2
Vaadin 7.2
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App Presentation
 
Introduction to Vaadin
Introduction to VaadinIntroduction to Vaadin
Introduction to Vaadin
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next Framework
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorSupercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence Editor
 
Introduction to React for Frontend Developers
Introduction to React for Frontend DevelopersIntroduction to React for Frontend Developers
Introduction to React for Frontend Developers
 
WOdka
WOdkaWOdka
WOdka
 
Android dev tips
Android dev tipsAndroid dev tips
Android dev tips
 
Angular introduction students
Angular introduction studentsAngular introduction students
Angular introduction students
 
Angular Js Get Started - Complete Course
Angular Js Get Started - Complete CourseAngular Js Get Started - Complete Course
Angular Js Get Started - Complete Course
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Angular js
Angular jsAngular js
Angular js
 
Creating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-htmlCreating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-html
 
SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...
SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...
SharePoint Saturday Ottawa 2015 - Office 365 and PowerShell - A match made in...
 
Angular 9
Angular 9 Angular 9
Angular 9
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 
Mobile for SharePoint with Windows Phone
Mobile for SharePoint with Windows PhoneMobile for SharePoint with Windows Phone
Mobile for SharePoint with Windows Phone
 
Angular interview questions
Angular interview questionsAngular interview questions
Angular interview questions
 
Production Ready Web Services with Dropwizard
Production Ready Web Services with DropwizardProduction Ready Web Services with Dropwizard
Production Ready Web Services with Dropwizard
 

En vedette

Kiss and the City - Presentation
Kiss and the City - PresentationKiss and the City - Presentation
Kiss and the City - Presentation
Momentom
 
latest_tv presentation show_timing
latest_tv presentation show_timinglatest_tv presentation show_timing
latest_tv presentation show_timing
Shady Mohamed Magdy
 
Tv news practical
Tv news practicalTv news practical
Tv news practical
iain bruce
 
Produce and pitch to perfection for TV
Produce and pitch to perfection for TVProduce and pitch to perfection for TV
Produce and pitch to perfection for TV
NatashaFennell
 
E tv pitch
E tv pitchE tv pitch
E tv pitch
mhays3
 
Presentation for tv show
Presentation for tv showPresentation for tv show
Presentation for tv show
TomMichaelRoss
 

En vedette (20)

Bootstrap
BootstrapBootstrap
Bootstrap
 
Kiss and the City - Presentation
Kiss and the City - PresentationKiss and the City - Presentation
Kiss and the City - Presentation
 
Présentation Emission TV En Mode Appart
Présentation Emission TV En Mode AppartPrésentation Emission TV En Mode Appart
Présentation Emission TV En Mode Appart
 
latest_tv presentation show_timing
latest_tv presentation show_timinglatest_tv presentation show_timing
latest_tv presentation show_timing
 
The Voice - The Engaging Model (Valerie Janssens)
The Voice - The Engaging Model (Valerie Janssens)The Voice - The Engaging Model (Valerie Janssens)
The Voice - The Engaging Model (Valerie Janssens)
 
Pitching - Thinking Of Pitching Nottingham Print
Pitching - Thinking Of Pitching Nottingham PrintPitching - Thinking Of Pitching Nottingham Print
Pitching - Thinking Of Pitching Nottingham Print
 
BLEST_TV_Presentation
BLEST_TV_PresentationBLEST_TV_Presentation
BLEST_TV_Presentation
 
Tv news practical
Tv news practicalTv news practical
Tv news practical
 
Produce and pitch to perfection for TV
Produce and pitch to perfection for TVProduce and pitch to perfection for TV
Produce and pitch to perfection for TV
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
E tv pitch
E tv pitchE tv pitch
E tv pitch
 
Tv presentation research
Tv presentation researchTv presentation research
Tv presentation research
 
Abroad Presentation
Abroad PresentationAbroad Presentation
Abroad Presentation
 
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & ToastmastersHow to Pitch an Idea - Lessons from EMC TV & Toastmasters
How to Pitch an Idea - Lessons from EMC TV & Toastmasters
 
PowerPoint: Pitching a TV Show
PowerPoint: Pitching a TV ShowPowerPoint: Pitching a TV Show
PowerPoint: Pitching a TV Show
 
Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...
Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...
Bootstrap 3 - Sleek, intuitive, and powerful mobile first front-end framework...
 
Reality tv show concept
Reality tv show conceptReality tv show concept
Reality tv show concept
 
10 Tips on How to Pitch a VC (FOWA, London)
10 Tips on How to Pitch a VC (FOWA, London)10 Tips on How to Pitch a VC (FOWA, London)
10 Tips on How to Pitch a VC (FOWA, London)
 
Presentation for tv show
Presentation for tv showPresentation for tv show
Presentation for tv show
 
Bootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress MeetupBootstrap 3 Basic - Bangkok WordPress Meetup
Bootstrap 3 Basic - Bangkok WordPress Meetup
 

Similaire à Building a TV show with Angular, Bootstrap, and Web Services

Similaire à Building a TV show with Angular, Bootstrap, and Web Services (20)

Introduction to Angular2
Introduction to Angular2Introduction to Angular2
Introduction to Angular2
 
angular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdfangular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdf
 
Jan 2017 - a web of applications (angular 2)
Jan 2017 - a web of applications (angular 2)Jan 2017 - a web of applications (angular 2)
Jan 2017 - a web of applications (angular 2)
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Exploring Angular 2 - Episode 1
Exploring Angular 2 - Episode 1Exploring Angular 2 - Episode 1
Exploring Angular 2 - Episode 1
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java Developers
 
Commit University - Exploring Angular 2
Commit University - Exploring Angular 2Commit University - Exploring Angular 2
Commit University - Exploring Angular 2
 
angular-concepts-introduction-slides.pptx
angular-concepts-introduction-slides.pptxangular-concepts-introduction-slides.pptx
angular-concepts-introduction-slides.pptx
 
mean stack
mean stackmean stack
mean stack
 
Angular 2 - a New Hope
Angular 2 - a New HopeAngular 2 - a New Hope
Angular 2 - a New Hope
 
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David GiardBuilding Powerful Applications with AngularJS 2 and TypeScript - David Giard
Building Powerful Applications with AngularJS 2 and TypeScript - David Giard
 
Angular2 + rxjs
Angular2 + rxjsAngular2 + rxjs
Angular2 + rxjs
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Hidden Docs in Angular
Hidden Docs in AngularHidden Docs in Angular
Hidden Docs in Angular
 
Simple setup for an Angular EventEmitter
Simple setup for an Angular EventEmitterSimple setup for an Angular EventEmitter
Simple setup for an Angular EventEmitter
 
Understanding router state in angular 7 passing data through angular router s...
Understanding router state in angular 7 passing data through angular router s...Understanding router state in angular 7 passing data through angular router s...
Understanding router state in angular 7 passing data through angular router s...
 
Meetup SkillValue - Angular 6 : Bien démarrer son application
Meetup SkillValue - Angular 6 : Bien démarrer son applicationMeetup SkillValue - Angular 6 : Bien démarrer son application
Meetup SkillValue - Angular 6 : Bien démarrer son application
 
Technozaure - Angular2
Technozaure - Angular2Technozaure - Angular2
Technozaure - Angular2
 
Angularjs
AngularjsAngularjs
Angularjs
 

Plus de David Giard

How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
David Giard
 

Plus de David Giard (20)

Data Visualization - CodeMash 2022
Data Visualization - CodeMash 2022Data Visualization - CodeMash 2022
Data Visualization - CodeMash 2022
 
Azure data factory
Azure data factoryAzure data factory
Azure data factory
 
Azure functions
Azure functionsAzure functions
Azure functions
 
University of Texas lecture: Data Science Tools in Microsoft Azure
University of Texas lecture: Data Science Tools in Microsoft AzureUniversity of Texas lecture: Data Science Tools in Microsoft Azure
University of Texas lecture: Data Science Tools in Microsoft Azure
 
University of Texas, Data Science, March 29, 2018
University of Texas, Data Science, March 29, 2018University of Texas, Data Science, March 29, 2018
University of Texas, Data Science, March 29, 2018
 
Intro to cloud and azure
Intro to cloud and azureIntro to cloud and azure
Intro to cloud and azure
 
Azure and deep learning
Azure and deep learningAzure and deep learning
Azure and deep learning
 
Azure and Deep Learning
Azure and Deep LearningAzure and Deep Learning
Azure and Deep Learning
 
Custom vision
Custom visionCustom vision
Custom vision
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and roll
 
Own your own career advice from a veteran consultant
Own your own career   advice from a veteran consultantOwn your own career   advice from a veteran consultant
Own your own career advice from a veteran consultant
 
You and Your Tech Community
You and Your Tech CommunityYou and Your Tech Community
You and Your Tech Community
 
Microsoft Azure IoT overview
Microsoft Azure IoT overviewMicrosoft Azure IoT overview
Microsoft Azure IoT overview
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and roll
 
Big Data on azure
Big Data on azureBig Data on azure
Big Data on azure
 
Microsoft azure without microsoft
Microsoft azure without microsoftMicrosoft azure without microsoft
Microsoft azure without microsoft
 
Effective Data Visualization
Effective Data VisualizationEffective Data Visualization
Effective Data Visualization
 
Containers
ContainersContainers
Containers
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and roll
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Building a TV show with Angular, Bootstrap, and Web Services

Notes de l'éditeur

  1. COMPONENT = Template (view, including HTML, bindings, directives) + Class (properties / methods; created with TypeScript) + Metadata (decorator: from Angular)
  2. structural directives (*ngIf, *ngFor) Replaces HTML