Mentre ogni giorno di più crescono e si fanno sempre più complessi gli ambiti nei quali Javascript si propone (e spesso impone) come strumento di sviluppo, viene da chiedersi se (e quando) si avvererà la legge di Atwood per la quale "ogni applicazione che può essere scritta in Javascript, sarà necessariamente scritta in Javascript".
Nell'attesa di scoprirlo meglio prepararsi con vecchi e nuovi patterns e best practices che ci consentono di realizzare software di qualità con uno dei linguaggi più duttili e trasversali di sempre.
Presentazione realizzata nell'ambito del progetto "Lo Stretto Digitale"
5. ALCUNI FATTI SU JAVASCRIPT...
Sviluppato da una sola persona ( ) in 10 giorni
Sintassi come il C
Interpretato come Basic
Dinamico come Python
Funzionale come Scheme
Ad oggetti ...ma senza classi! (come Perl)
...ed ha Java nel nome!
@BrendanEich
9. public class Point {
private int x = 0;
private int y = 0;
//constructor
public Point(int a, int b) {
x = a;
y = b;
}
public int sumXY() {
return x+y;
}
}
Point origin = new Point(23, 94);
out.print(origin.sumXY());
39. // Revealing Module Pattern
var myApp.utils.geo = (function() {
//private
var x = 0,
y = 0,
set = function(coordx,coordy) {
x = coordx;
y = coordy;
};
// public
return {
setCoords: set
};
}());
myApp.utils.geo.setCoords(10,10);
41. // File Name: utils/geo.js
// per convenzione , il nome del modulo è quello del file
define(
[ "underscore", "jquery" ], // dipendenze
function( _, $ ) { /* Callback : i parametri corrispondono alle
dipendenze richieste */
.
.
.
// public
return {
setCoords: set
};
});
53. // Template
<script id="tmpl-books" type="text/template">
</script>
<ul>
<% for (var i = 0; i < books.length; i++) { %>
<% var book = books[i]; %>
<li>
<em><%= book.title %></em> di <%= book.author %>
</li>
<% } %>
</ul>
54. var tmplMarkup = $('#tmpl-books').html();
var compiledTmpl = _.template(tmplMarkup, { books : data });
$('#target').html(compiledTmpl);
55. <ul>
<li><em>Code Complete</em> di Steve McConnell</li>
<li><em>JavaScript: The Good Parts</em> di Douglas Crockford</li>
<li><em>The Mythical Man-Month</em> di Fred Brooks</li>
</ul>
57. MODEL : Rappresenta i dati e la logica utile per recuperarli
e manipolarli
VIEW : Visualizza i dati e interagisce con il fruitore
CONTROLLER : Riceve i comandi del fruitore e li attua
modificando lo stato degli altri due componenti