SlideShare uma empresa Scribd logo
1 de 53
livinglabs.regione.puglia.it
e-SUAP
Integrated platform for SUAP electronic management
The project
Citizens
Companies
Professionals
SUAP Office
PA Institution (ASL, VVF, etc..)
Cloud
e-SUAP
Client Technologies
Overview
• Single Page Application
• HTML5 + CSS3
• Durandal
• KnockoutJS
• Typescript
• Utils
• Bootstrap + Less
• QUnit
Single page application
SPA is a web application fitting on a single
web page with the goal of providing a more
fluid user experience akin to a desktop
application.
SPA - Features
• Chunking
• Controllers
• Templating
• Routing
• Real-time communication
• Local storage
• Testing
SPA - Chunking
The web server combines
HTML and data and sends
them to the client every time
it receives a request.
The web page is constructed
by loading chunks of HTML
fragments and data.
NoSPA SPA
SPA - Controllers
Scripting JavaScript:
• DOM management
• Data manipulation
• Application logic
• AJAX calls
Views and Models
separation thanks to MVC o
MVVM patterns:
• model → domain logic
• view → presentation logic
• controller → control logic
NoSPA SPA
SPA - Templating
UI and DOM manipulation by
using Javascript scripts.
There is declarative binding
of data to HTML templates
NoSPA SPA
SPA - Routing
Pages are reloaded at each
request.
Selection of views and
navigation (without page
reloads).
This preserves:
• Page state
• elements
• data
NoSPA SPA
SPA - Real-time communication
One-way request
communication between
browser and server.
Two-way communication of
a client application and web
server replaces one-way
requests from a browser.
NoSPA SPA
SPA - Local storage
• Intensive data loads only
on web server.
• Cookies use.
Capabilities of storing data
on a browser for
performance and offline
access replace cookies and
intensive data loads from
web server.
NoSPA SPA
SPA - Testing
“Trial and Error” testing
technique is used.
TDD and BDD approach are
adopted by using specific
testing frameworks.
NoSPA SPA
SPA - Pros & Cons
• User Experience
• Server-load reduction
• JavaScript
• Client-load increasing
• SEO
• JavaScript
HTML5
HTML or HyperText Markup Language is the
standard markup language used to create web
pages.
HTML5 introduces new elements and attributes
for complex web applications.
HTML5 - What is new?
• New elements
• New attributes
• CSS3 support
• Video and Audio
• 2D/3D graphic support
• Local Storage
• Local SQL Database
• Web Applications
HTML5 - What is new?
Multimedia:
• Generic<object> tag is replaced by <video> and
<audio> specific tags.
Graphic:
•<canvas> tag is introduced
•Ability to use inline SVG
•CSS3 2D/3D support
HTML5 - What is new?
Applications:
• Local data storage
• Local file access
• Local SQL database
• Application cache
• Javascript workers
• XHTMLHttpRequest 2
• Geolocalization
HTML5 - What is new?
Semantic elements:
New elements are introduced: <header>, <footer>,
<menu>, <section> e <article>
Forms:
New elements, new attributes, new input type and
automatic validation.
CSS3
Cascading Style Sheets (CSS) is a style sheet language
used for describing the look and formatting of a
document written in a markup language.
CSS3 is divided into several separate documents called
"modules". Each module adds new capabilities or
extends features defined in CSS 2, preserving backward
compatibility.
CSS3 - What is new?
• New selectors
• New properties
• Animations
• 2D/3D transformations
• Rounded corners
• Shading
• Downloadable fonts
Durandal
Durandal is a lightweight JavaScript framework
designed to make building Single Page
Applications (SPAs) simple and elegant.
Durandal - Features
• MV* Architecture support
• JavaScript and HTML modularity
• Application Lifecycle
• Navigation
• asynchronous programming by using Promises
• Optimization
• Based on jQuery, Knockout and RequireJS
KnockoutJS
Knockout is a JavaScript library that helps
you to create rich, responsive display and
editor user interfaces with a clean underlying
data model.
It implements MVVM patterns and allows
templates using.
KnockoutJS - Example
function ViewModel() {
this.firstName = ko.observable();
}
ko.applyBindings(new ViewModel());
<html>
<head>
<script type=”text/javascript”
src=”knockout-3.1.0.js”></script>
<script type=”text/javascript”
src=”myscript.js”></script>
</head>
<body>
<input data-bind=“value: firstName”>
My name is
<span data-bind=“text: firstName”></span>
</body>
</html>
myscript.js mypage.html
KnockoutJS - Example
function ViewModel() {
this.firstName = ko.observable();
this.lastName = ko.observable();
this.fullName=ko.computed(function() {
return this.firstName()+’ ‘+this.lastName();
});
}
ko.applyBindings(new ViewModel());
<html>
<head>
<script type=”text/javascript”
src=”knockout-3.1.0.js”></script>
<script type=”text/javascript”
src=”myscript.js”></script>
</head>
<body>
<input data-bind=“value: firstName”>
<input data-bind=“value: lastName”>
My name is
<span data-bind=“text: fullName”></span>
</body>
</html>
myscript.js mypage.html
KnockoutJS - Example
function ViewModel() {
this.list = ko.observableArray([
{item: ’item1’},
{item: ’item2’},
{item: ’item3’},
]);
}
ko.applyBindings(new ViewModel());
<html>
<head>
<script type=”text/javascript”
src=“knockout-3.1.0.js”></script>
<script type=”text/javascript”
src=”myscript.js”></script>
</head>
<body>
Todo list:
<ul>
<!-- ko: foreach list -->
<li data-bind=“text: item”></li>
<!-- /ko -->
</ul>
</body>
</html>
myscript.js mypage.html
TypeScript
TypeScript is a free and open source
programming language developed by Microsoft.
It is a strict superset of JavaScript, and adds
optional static typing and class-based object-
oriented programming to the language.
TypeScript - Example
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return ‘Hello, ‘ + this.greeting;
}
}
var greeter = new Greeter(‘world’);
var button = document.createElement(‘button’);
button.onclick = function() {
alert(greeter.greet());
}
document.body.appendChild(button);
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return ‘Hello, ‘ + this.greeting;
};
return Greeter;
})();
var greeter = new Greeter(‘world’);
var button = document.createElement(‘button’);
button.onclick = function () {
alert(greeter.greet());
};
document.body.appendChild(button);
myscript.ts myscript.js
JS Utils - Underscore
Underscore is a JavaScript library that provides a whole
mess of useful functional programming helpers without
extending any built-in objects.
Thanks to it modern browsers can use the native
implementations of forEach, map, reduce, filter, every,
some and indexOf.
JS Utils - Underscore - Example
_.map([1, 2, 3], function(num){
return num * 3;
});
=> [3, 6, 9]
_.reduce([1, 2, 3], function(memo, num){
return memo + num;
}, 0);
=> 6
_.filter([1, 2, 3, 4, 5, 6], function(num){
return num % 2 == 0;
});
=> [2, 4, 6]
…
JS Utils - Async
Async is a utility module which provides
straight-forward, powerful functions for
working with asynchronous JavaScript.
JS Utils - Async - Example
async.series([
function(callback){
// do some stuff ...
callback(null, ’one’);
},
function(callback){
// do some more stuff …
callback(null, ’two’);
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});
async.parallel([
function(callback){
setTimeout(function(){
callback(null, ’one’);
}, 200);
},
function(callback){
setTimeout(function(){
callback(null, ’two’);
}, 100);
}
],
// optional callback
function(err, results){
// the results array will equal ['one','two’] even
// though second function had a shorter timeout.
});
Bootstrap
Bootstrap is a free collection of tools for
creating websites and web applications.
It contains HTML and CSS-based design
templates for typography, forms, buttons,
navigation and other interface components, as
well as optional JavaScript extensions.
Bootstrap - Components
Less
Less (Leaner CSS) is a dynamic stylesheet
language that provides the following mechanisms
for CSS: variables, nesting, mixins, operators and
functions;
The indented syntax of LESS is a nested
metalanguage, as valid CSS is valid LESS code
with the same semantics.
Less
@base: #f938ab;
.box-shadow(@style, @c)
when (iscolor(@c)) {
-webkit-box-shadow: @style @c;
box-shadow: @style @c;
}
.box-shadow(@style, @alpha: 50%)
when (isnumber(@alpha)) {
.box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
color: saturate(@base, 5%);
border-color: lighten(@base, 30%);
div { .box-shadow(0 0 5px, 30%) }
}
.box {
color: #fe33ac;
border-color: #fdcdea;
}
.box div {
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
mystyle.less mystyle.css
QUnit
QUnit is a JavaScript unit-testing framework.
QUnit
QUnit.test('a basic test example', function (assert) {
var obj = {};
assert.ok(true, 'Boolean true'); // passes
assert.ok(1, 'Number one'); // passes
assert.ok(false, 'Boolean false'); // fails
obj.start = 'Hello';
obj.end = 'Ciao';
// passes
assert.equal(obj.start, 'Hello', 'Opening greet');
// fails
assert.equal(obj.end, 'Goodbye', 'Closing greet');
});
Alternative
Conclusions
Developing SPAs is more complex than
creating a classic web application.
Conclusions
A SPA moves logic from the server to the
client.
Conclusions
The technologies are refining themselves
References
• w3.org/TR/html5
• w3.org/TR/css3-*
• durandaljs.com
• knockoutjs.com
• typescriptlang.org
• underscorejs.org
• github.com/caolan/async
• getbootstrap.com
• lesscss.org
• qunitjs.com
Ing. Sabino Labarile
Code Architects s.r.l.
slabarile@codearchitects.com

Mais conteúdo relacionado

Mais procurados

Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQueryAkshay Mathur
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with JavascriptAkshay Mathur
 
Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web appsIvano Malavolta
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events WebStackAcademy
 
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Ayes Chinmay
 
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...mfrancis
 
Soa development using javascript
Soa development using javascriptSoa development using javascript
Soa development using javascriptDsixE Inc
 
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_techKabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_techKazuhiro Sera
 
jQuery - Chapter 4 - DOM Handling
jQuery - Chapter 4 - DOM Handling jQuery - Chapter 4 - DOM Handling
jQuery - Chapter 4 - DOM Handling WebStackAcademy
 
Agile NCR 2013 - Gaurav Bansal- web_automation
Agile NCR 2013 - Gaurav Bansal- web_automationAgile NCR 2013 - Gaurav Bansal- web_automation
Agile NCR 2013 - Gaurav Bansal- web_automationAgileNCR2013
 
jQuery - Chapter 5 - Ajax
jQuery - Chapter 5 -  AjaxjQuery - Chapter 5 -  Ajax
jQuery - Chapter 5 - AjaxWebStackAcademy
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresherIvano Malavolta
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOSjimmyatmedium
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVCAcquisio
 

Mais procurados (20)

Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with Javascript
 
Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web apps
 
Ajax and Jquery
Ajax and JqueryAjax and Jquery
Ajax and Jquery
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events
 
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
Internet and Web Technology (CLASS-10) [Node.js] | NIC/NIELIT Web Technology
 
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
OSGi and Spring Data for simple (Web) Application Development - Christian Bar...
 
jQuery Effects
jQuery EffectsjQuery Effects
jQuery Effects
 
Soa development using javascript
Soa development using javascriptSoa development using javascript
Soa development using javascript
 
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_techKabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
Kabukiza.tech 1 LT - ScalikeJDBC-Async & Skinny Framework #kbkz_tech
 
Angular js 1.0-fundamentals
Angular js 1.0-fundamentalsAngular js 1.0-fundamentals
Angular js 1.0-fundamentals
 
Angular js
Angular jsAngular js
Angular js
 
jQuery - Chapter 4 - DOM Handling
jQuery - Chapter 4 - DOM Handling jQuery - Chapter 4 - DOM Handling
jQuery - Chapter 4 - DOM Handling
 
Agile NCR 2013 - Gaurav Bansal- web_automation
Agile NCR 2013 - Gaurav Bansal- web_automationAgile NCR 2013 - Gaurav Bansal- web_automation
Agile NCR 2013 - Gaurav Bansal- web_automation
 
jQuery - Chapter 5 - Ajax
jQuery - Chapter 5 -  AjaxjQuery - Chapter 5 -  Ajax
jQuery - Chapter 5 - Ajax
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
 
jQuery Ajax
jQuery AjaxjQuery Ajax
jQuery Ajax
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOS
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVC
 

Destaque

Denís morín.
Denís morín.Denís morín.
Denís morín.BelenMO
 
Apresentação Flávio Mendes - Redes Sociais Governamentais
Apresentação Flávio Mendes - Redes Sociais GovernamentaisApresentação Flávio Mendes - Redes Sociais Governamentais
Apresentação Flávio Mendes - Redes Sociais Governamentaisdgegovpb
 
Conferencia de Christian. Los dinosaurios
Conferencia de Christian. Los dinosauriosConferencia de Christian. Los dinosaurios
Conferencia de Christian. Los dinosauriosLaura Zamorano Millán
 

Destaque (6)

Denís morín.
Denís morín.Denís morín.
Denís morín.
 
Star Chart
Star ChartStar Chart
Star Chart
 
Raji (slide)
Raji (slide)Raji (slide)
Raji (slide)
 
Apresentação Flávio Mendes - Redes Sociais Governamentais
Apresentação Flávio Mendes - Redes Sociais GovernamentaisApresentação Flávio Mendes - Redes Sociais Governamentais
Apresentação Flávio Mendes - Redes Sociais Governamentais
 
Los sentidos del bachillerato en méxico cemys2014
Los sentidos del bachillerato en méxico cemys2014Los sentidos del bachillerato en méxico cemys2014
Los sentidos del bachillerato en méxico cemys2014
 
Conferencia de Christian. Los dinosaurios
Conferencia de Christian. Los dinosauriosConferencia de Christian. Los dinosaurios
Conferencia de Christian. Los dinosaurios
 

Semelhante a e-suap - client technologies- english version

WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesDoris Chen
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
PPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to serverPPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to servershivanichourasia01
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesPerformance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesDoris Chen
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure FunctionsShahed Chowdhuri
 
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-htmlIlia Idakiev
 
Web Components v1
Web Components v1Web Components v1
Web Components v1Mike Wilcox
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014Ran Wahle
 

Semelhante a e-suap - client technologies- english version (20)

WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best Practices
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fallHtml5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
 
PPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to serverPPT on javascript ajax and css and some points related to server
PPT on javascript ajax and css and some points related to server
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Performance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best PracticesPerformance Optimization and JavaScript Best Practices
Performance Optimization and JavaScript Best Practices
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
 
Html5
Html5Html5
Html5
 
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
 
Ajax Lecture Notes
Ajax Lecture NotesAjax Lecture Notes
Ajax Lecture Notes
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
前端概述
前端概述前端概述
前端概述
 
Couchbas for dummies
Couchbas for dummiesCouchbas for dummies
Couchbas for dummies
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 

Mais de Sabino Labarile

SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma Sabino Labarile
 
Manuale utente SUE AGILE
Manuale utente SUE AGILEManuale utente SUE AGILE
Manuale utente SUE AGILESabino Labarile
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)Sabino Labarile
 
SUE AGILE MVVM (English)
SUE AGILE MVVM (English)SUE AGILE MVVM (English)
SUE AGILE MVVM (English)Sabino Labarile
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)Sabino Labarile
 
SUE AGILE Framework (English)
SUE AGILE Framework (English)SUE AGILE Framework (English)
SUE AGILE Framework (English)Sabino Labarile
 
SUE AGILE Architecture (English)
SUE AGILE Architecture (English)SUE AGILE Architecture (English)
SUE AGILE Architecture (English)Sabino Labarile
 
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMA
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMASUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMA
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMASabino Labarile
 
e-suap cloud computing- English version
e-suap cloud computing- English versione-suap cloud computing- English version
e-suap cloud computing- English versionSabino Labarile
 
e-SUAP - Ochestration building block (italian)
e-SUAP - Ochestration building block (italian)e-SUAP - Ochestration building block (italian)
e-SUAP - Ochestration building block (italian)Sabino Labarile
 
e-SUAP - Ochestration building block (english)
e-SUAP - Ochestration building block (english)e-SUAP - Ochestration building block (english)
e-SUAP - Ochestration building block (english)Sabino Labarile
 
e-SUAP - Security - Windows azure access control list (english version)
e-SUAP - Security - Windows azure access control list (english version)e-SUAP - Security - Windows azure access control list (english version)
e-SUAP - Security - Windows azure access control list (english version)Sabino Labarile
 
e-SUAP - Security - Windows azure access control list (italian version)
e-SUAP - Security - Windows azure access control list (italian version)e-SUAP - Security - Windows azure access control list (italian version)
e-SUAP - Security - Windows azure access control list (italian version)Sabino Labarile
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
e-SUAP - Data access server side (English)
e-SUAP - Data access server side (English)e-SUAP - Data access server side (English)
e-SUAP - Data access server side (English)Sabino Labarile
 
e-suap - general software architecture (English)
e-suap - general software architecture (English)e-suap - general software architecture (English)
e-suap - general software architecture (English)Sabino Labarile
 
e-SUAP - General software architecture (English)
e-SUAP - General software architecture  (English)e-SUAP - General software architecture  (English)
e-SUAP - General software architecture (English)Sabino Labarile
 
E suap - cloud computing (Italian)
E suap - cloud computing (Italian)E suap - cloud computing (Italian)
E suap - cloud computing (Italian)Sabino Labarile
 

Mais de Sabino Labarile (20)

SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma SUE AGILE - Presentazione della piattaforma
SUE AGILE - Presentazione della piattaforma
 
Manuale utente SUE AGILE
Manuale utente SUE AGILEManuale utente SUE AGILE
Manuale utente SUE AGILE
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)
 
SUE AGILE MVVM (English)
SUE AGILE MVVM (English)SUE AGILE MVVM (English)
SUE AGILE MVVM (English)
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)
 
SUE AGILE Framework (English)
SUE AGILE Framework (English)SUE AGILE Framework (English)
SUE AGILE Framework (English)
 
SUE AGILE Architecture (English)
SUE AGILE Architecture (English)SUE AGILE Architecture (English)
SUE AGILE Architecture (English)
 
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMA
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMASUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMA
SUE AGILE - GUIDA ALL'UTILIZZO DELLA PIATTAFORMA
 
e-suap cloud computing- English version
e-suap cloud computing- English versione-suap cloud computing- English version
e-suap cloud computing- English version
 
e-SUAP - Ochestration building block (italian)
e-SUAP - Ochestration building block (italian)e-SUAP - Ochestration building block (italian)
e-SUAP - Ochestration building block (italian)
 
e-SUAP - Ochestration building block (english)
e-SUAP - Ochestration building block (english)e-SUAP - Ochestration building block (english)
e-SUAP - Ochestration building block (english)
 
e-SUAP - Security - Windows azure access control list (english version)
e-SUAP - Security - Windows azure access control list (english version)e-SUAP - Security - Windows azure access control list (english version)
e-SUAP - Security - Windows azure access control list (english version)
 
e-SUAP - Security - Windows azure access control list (italian version)
e-SUAP - Security - Windows azure access control list (italian version)e-SUAP - Security - Windows azure access control list (italian version)
e-SUAP - Security - Windows azure access control list (italian version)
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
e-SUAP - Data access server side (English)
e-SUAP - Data access server side (English)e-SUAP - Data access server side (English)
e-SUAP - Data access server side (English)
 
e-suap - general software architecture (English)
e-suap - general software architecture (English)e-suap - general software architecture (English)
e-suap - general software architecture (English)
 
e-SUAP - General software architecture (English)
e-SUAP - General software architecture  (English)e-SUAP - General software architecture  (English)
e-SUAP - General software architecture (English)
 
E suap - cloud computing (Italian)
E suap - cloud computing (Italian)E suap - cloud computing (Italian)
E suap - cloud computing (Italian)
 

Último

Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 

Último (20)

Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 

e-suap - client technologies- english version

  • 4. Overview • Single Page Application • HTML5 + CSS3 • Durandal • KnockoutJS • Typescript • Utils • Bootstrap + Less • QUnit
  • 5. Single page application SPA is a web application fitting on a single web page with the goal of providing a more fluid user experience akin to a desktop application.
  • 6. SPA - Features • Chunking • Controllers • Templating • Routing • Real-time communication • Local storage • Testing
  • 7. SPA - Chunking The web server combines HTML and data and sends them to the client every time it receives a request. The web page is constructed by loading chunks of HTML fragments and data. NoSPA SPA
  • 8. SPA - Controllers Scripting JavaScript: • DOM management • Data manipulation • Application logic • AJAX calls Views and Models separation thanks to MVC o MVVM patterns: • model → domain logic • view → presentation logic • controller → control logic NoSPA SPA
  • 9. SPA - Templating UI and DOM manipulation by using Javascript scripts. There is declarative binding of data to HTML templates NoSPA SPA
  • 10. SPA - Routing Pages are reloaded at each request. Selection of views and navigation (without page reloads). This preserves: • Page state • elements • data NoSPA SPA
  • 11. SPA - Real-time communication One-way request communication between browser and server. Two-way communication of a client application and web server replaces one-way requests from a browser. NoSPA SPA
  • 12. SPA - Local storage • Intensive data loads only on web server. • Cookies use. Capabilities of storing data on a browser for performance and offline access replace cookies and intensive data loads from web server. NoSPA SPA
  • 13. SPA - Testing “Trial and Error” testing technique is used. TDD and BDD approach are adopted by using specific testing frameworks. NoSPA SPA
  • 14. SPA - Pros & Cons • User Experience • Server-load reduction • JavaScript • Client-load increasing • SEO • JavaScript
  • 15.
  • 16. HTML5 HTML or HyperText Markup Language is the standard markup language used to create web pages. HTML5 introduces new elements and attributes for complex web applications.
  • 17. HTML5 - What is new? • New elements • New attributes • CSS3 support • Video and Audio • 2D/3D graphic support • Local Storage • Local SQL Database • Web Applications
  • 18. HTML5 - What is new? Multimedia: • Generic<object> tag is replaced by <video> and <audio> specific tags. Graphic: •<canvas> tag is introduced •Ability to use inline SVG •CSS3 2D/3D support
  • 19. HTML5 - What is new? Applications: • Local data storage • Local file access • Local SQL database • Application cache • Javascript workers • XHTMLHttpRequest 2 • Geolocalization
  • 20. HTML5 - What is new? Semantic elements: New elements are introduced: <header>, <footer>, <menu>, <section> e <article> Forms: New elements, new attributes, new input type and automatic validation.
  • 21.
  • 22. CSS3 Cascading Style Sheets (CSS) is a style sheet language used for describing the look and formatting of a document written in a markup language. CSS3 is divided into several separate documents called "modules". Each module adds new capabilities or extends features defined in CSS 2, preserving backward compatibility.
  • 23. CSS3 - What is new? • New selectors • New properties • Animations • 2D/3D transformations • Rounded corners • Shading • Downloadable fonts
  • 24.
  • 25. Durandal Durandal is a lightweight JavaScript framework designed to make building Single Page Applications (SPAs) simple and elegant.
  • 26. Durandal - Features • MV* Architecture support • JavaScript and HTML modularity • Application Lifecycle • Navigation • asynchronous programming by using Promises • Optimization • Based on jQuery, Knockout and RequireJS
  • 27.
  • 28. KnockoutJS Knockout is a JavaScript library that helps you to create rich, responsive display and editor user interfaces with a clean underlying data model. It implements MVVM patterns and allows templates using.
  • 29. KnockoutJS - Example function ViewModel() { this.firstName = ko.observable(); } ko.applyBindings(new ViewModel()); <html> <head> <script type=”text/javascript” src=”knockout-3.1.0.js”></script> <script type=”text/javascript” src=”myscript.js”></script> </head> <body> <input data-bind=“value: firstName”> My name is <span data-bind=“text: firstName”></span> </body> </html> myscript.js mypage.html
  • 30. KnockoutJS - Example function ViewModel() { this.firstName = ko.observable(); this.lastName = ko.observable(); this.fullName=ko.computed(function() { return this.firstName()+’ ‘+this.lastName(); }); } ko.applyBindings(new ViewModel()); <html> <head> <script type=”text/javascript” src=”knockout-3.1.0.js”></script> <script type=”text/javascript” src=”myscript.js”></script> </head> <body> <input data-bind=“value: firstName”> <input data-bind=“value: lastName”> My name is <span data-bind=“text: fullName”></span> </body> </html> myscript.js mypage.html
  • 31. KnockoutJS - Example function ViewModel() { this.list = ko.observableArray([ {item: ’item1’}, {item: ’item2’}, {item: ’item3’}, ]); } ko.applyBindings(new ViewModel()); <html> <head> <script type=”text/javascript” src=“knockout-3.1.0.js”></script> <script type=”text/javascript” src=”myscript.js”></script> </head> <body> Todo list: <ul> <!-- ko: foreach list --> <li data-bind=“text: item”></li> <!-- /ko --> </ul> </body> </html> myscript.js mypage.html
  • 32.
  • 33. TypeScript TypeScript is a free and open source programming language developed by Microsoft. It is a strict superset of JavaScript, and adds optional static typing and class-based object- oriented programming to the language.
  • 34. TypeScript - Example class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return ‘Hello, ‘ + this.greeting; } } var greeter = new Greeter(‘world’); var button = document.createElement(‘button’); button.onclick = function() { alert(greeter.greet()); } document.body.appendChild(button); var Greeter = (function () { function Greeter(message) { this.greeting = message; } Greeter.prototype.greet = function () { return ‘Hello, ‘ + this.greeting; }; return Greeter; })(); var greeter = new Greeter(‘world’); var button = document.createElement(‘button’); button.onclick = function () { alert(greeter.greet()); }; document.body.appendChild(button); myscript.ts myscript.js
  • 35.
  • 36. JS Utils - Underscore Underscore is a JavaScript library that provides a whole mess of useful functional programming helpers without extending any built-in objects. Thanks to it modern browsers can use the native implementations of forEach, map, reduce, filter, every, some and indexOf.
  • 37. JS Utils - Underscore - Example _.map([1, 2, 3], function(num){ return num * 3; }); => [3, 6, 9] _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); => 6 _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); => [2, 4, 6] …
  • 38. JS Utils - Async Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript.
  • 39. JS Utils - Async - Example async.series([ function(callback){ // do some stuff ... callback(null, ’one’); }, function(callback){ // do some more stuff … callback(null, ’two’); } ], // optional callback function(err, results){ // results is now equal to ['one', 'two'] }); async.parallel([ function(callback){ setTimeout(function(){ callback(null, ’one’); }, 200); }, function(callback){ setTimeout(function(){ callback(null, ’two’); }, 100); } ], // optional callback function(err, results){ // the results array will equal ['one','two’] even // though second function had a shorter timeout. });
  • 40.
  • 41. Bootstrap Bootstrap is a free collection of tools for creating websites and web applications. It contains HTML and CSS-based design templates for typography, forms, buttons, navigation and other interface components, as well as optional JavaScript extensions.
  • 43. Less Less (Leaner CSS) is a dynamic stylesheet language that provides the following mechanisms for CSS: variables, nesting, mixins, operators and functions; The indented syntax of LESS is a nested metalanguage, as valid CSS is valid LESS code with the same semantics.
  • 44. Less @base: #f938ab; .box-shadow(@style, @c) when (iscolor(@c)) { -webkit-box-shadow: @style @c; box-shadow: @style @c; } .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { .box-shadow(@style, rgba(0, 0, 0, @alpha)); } .box { color: saturate(@base, 5%); border-color: lighten(@base, 30%); div { .box-shadow(0 0 5px, 30%) } } .box { color: #fe33ac; border-color: #fdcdea; } .box div { -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); } mystyle.less mystyle.css
  • 45.
  • 46. QUnit QUnit is a JavaScript unit-testing framework.
  • 47. QUnit QUnit.test('a basic test example', function (assert) { var obj = {}; assert.ok(true, 'Boolean true'); // passes assert.ok(1, 'Number one'); // passes assert.ok(false, 'Boolean false'); // fails obj.start = 'Hello'; obj.end = 'Ciao'; // passes assert.equal(obj.start, 'Hello', 'Opening greet'); // fails assert.equal(obj.end, 'Goodbye', 'Closing greet'); });
  • 49. Conclusions Developing SPAs is more complex than creating a classic web application.
  • 50. Conclusions A SPA moves logic from the server to the client.
  • 51. Conclusions The technologies are refining themselves
  • 52. References • w3.org/TR/html5 • w3.org/TR/css3-* • durandaljs.com • knockoutjs.com • typescriptlang.org • underscorejs.org • github.com/caolan/async • getbootstrap.com • lesscss.org • qunitjs.com
  • 53. Ing. Sabino Labarile Code Architects s.r.l. slabarile@codearchitects.com