MAGNUS GREEN (@magnusg)
Reise Film
Rock n’ Roll
Kaffe
www
Konsulent
Gaming
TDD .net
JavaScript
Clean Code Øl
Smidig
Sneakers
New York
Master of Information Technology
Hva skal vigjennom?
• Hva er en Single Page Application?
• Hvorfor Single Page Application?
• Hvordan lage en Single Page Application?
• Bootstrap – HTML5 UI rammeverk
• RequireJS – Modularisert JavaScript
• Knockout – MVVM rammeverk
• SignalR – Real-time async signaling
• Deploy som en Azure web-site
• Oppsummering
6.
Single Page WebApplication
• Applikasjon != Webside
• Data oppdateres når det er
nødvendig
• Data oppdateres der hvor det
er nødvendig
• Tilstand og navigasjon
6
7.
Client Server Data store
Tradisjonell web
Display HTML Authentication
Decorative JS Authorization
Ajax for HTML Validation Store data
Business logic Retrieve data
Generate HTML Business logic
Client Server Data store
Ajax for JSON Authentication
Business Logic Authorization
SPA
Generate HTML Validation Store data
Generate JSON Retrieve data
Kilde:
Single page web applications, Michael S. Mikowski og Josh C.
Powell
7
10.
Forvirret og sintbruker
(Dårlig steming) Blid og fornøyd bruker
(God stemning)
11.
KISS
• SPA i sin enkleste form med jQuery
– http://jsfiddle.net/magnusg/xCDR5/
• Litt mer avansert med flere rammeverk
– http://bit.ly/nnugspa
11
12.
Twitter Bootstrap
• Hva?
– Front-end rammeverk fra skaperne av
twitter
• Hvorfor?
– Rask vei til å få opp et godt rammeverk /
prototyp for en SPA eller webside.
– Lett å style om i etterkant
12
RequireJS
• Hva?
– Dependency injection for JavaScript
• Hvorfor?
– JavaScript-koden deles opp i moduler
– Lettere å få til SRP og renere kode
– Tar hånd om rekkefølgen på lastingen av
JavaScript moduler
14
15.
Modulnavn Avhengighet
define('dataservice.images', ['ajaxhelper'], function (ajaxhelper) {
var getImages = function (callbacks, searchTerm) {
var search = { searchTerm: searchTerm };
var data = search.searchTerm ? search : searchTerm;
return ajaxhelper.ajaxRequest('api/images', data)
.done(callbacks.success)
.fail(callbacks.error);
};
return {
getImages: getImages Revealing module
};
});
KnockoutJS
• Hva?
– MVVM (Model-View-ViewModel) rammeverk
– Data-binding for JavaScript
• Hvorfor?
– Oppdatering av UI når og hvor det er behov
– Applikasjonstilstand
– Renere markup og JavaScript
– Klart skille mellom markup og JavaScript
17
SignalR
• Hva?
– Sanntidskommunikasjon mellom server og klient
• Hvorfor?
– Sanntidsoppdatering av klienter
– Meldinger om endringer i data eller endringer i andre
klienter
20
Pass på!
• JavaScript minnehåndtering
• Ikke rør DOM hvis du ikke må!
• Lær deg JavaScript!
• Bruk Chrome debugging og
performance tools (Firebug /
Dragonfly)
22
23.
Oppsummering
• SPA = RIA = RWA?
• SPA er applikasjoner, ikke web-sider
• Bedre brukeropplevelse på flere plattformer
• JavaScript kan være rent og
vedlikeholdbart
• Web browseren som plattform har kommet
for å bli!
23 22. august 2012 Bunntekst – endres/slettes med "Sett inn, Topptekst og bunntekst"