2. 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
5. Hva skal vi gjennom?
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 Web Application
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 sint bruker
(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
14. 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
};
});
17. 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
20. SignalR
Hva?
Sanntidskommunikasjon mellom server og klient
Hvorfor?
Sanntidsoppdatering av klienter
Meldinger om endringer i data eller endringer i andre
klienter
20
22. 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"
25. Do you haz teh codez?
Websiden:
http://bit.ly/nnugspa
SPA Starter
https://github.com/magnushg/SinglePageAppStarter
Awsome SPA
https://github.com/magnushg/AwesomeSPAReboot
25