Differenze e novità di ES6
Integrazione di ES6 nel workflow
Slide 9
Slide 9 text
Cos'è ES6?
Slide 10
Slide 10 text
ECMA è l'organizzazione che definisce gli standard di
alcuni linguaggi tra cui Javascript
Attualmente la versione supportata dai browser moderni
è la ES5
ES6 è il nuovo standard Javascript a partire da Giugno
2015
Slide 11
Slide 11 text
Variabili
Slide 12
Slide 12 text
ES5
Variabili definite con la parola chiave "var"
Scope "Visibilità" della variabile relativa alla funzione in
cui viene definita o globale se fuori da una funzione.
Antipattern: omettere l'uso di "var"
Slide 13
Slide 13 text
ES6
Variabili definite con la parola chiave "var", "let", "const"
"let" permette di definire "variabili di blocco"
"const" definisce una constante
decostructing
parametri funzioni con valori di default
Slide 14
Slide 14 text
Funzioni
Slide 15
Slide 15 text
ES5
Definire una funzione con la keywork function
Il valore di this dipende dal contesto.
Slide 16
Slide 16 text
ES6
Definire una funzione con la keywork "function" o come
arrow function
Il valore di this in un arrow function è quello dell' oggetto
corrente
Slide 17
Slide 17 text
Oggetti
Slide 18
Slide 18 text
ES5
Un oggetto è definito come {chiave: valore} in cui la
chiave è una Stringa
Slide 19
Slide 19 text
ES6
possibilità di definire un Prototype per estendere altri
oggetti (__proto__ e super)
sintassi migliorata per funzioni e autoassegnamenti
nomi delle proprietà dinamici
Slide 20
Slide 20 text
Classi
Slide 21
Slide 21 text
ES5
Le classi vanno definite con una Costructor Function
Ereditarietà macchinosa.
Slide 22
Slide 22 text
ES6
Introduzione delle keyword
"class","extends","static",...
Programmazione OO più simile ad altri linguaggi, dettagli
implementativi nascosti.
Getter e Setter
Slide 23
Slide 23 text
Promises
Slide 24
Slide 24 text
ES5
Esistono dei plugin per implementare le Promise in ES5
jQuery Deferred è una implementazione molto simile alle
Promise disponibile con jQuery.
Slide 25
Slide 25 text
ES6
return new Promise((resolve, reject) => {})
Slide 26
Slide 26 text
Concatenare stringhe
Slide 27
Slide 27 text
ES5
La concatenazione utilizza l'operatore +
Slide 28
Slide 28 text
ES6
Utilizzando il carattere '`' è possibile definire una
template string
Una template string può essere multiline e utilizzare dei
placeholder per le variabili invece di concatenarle con il
'+'
Slide 29
Slide 29 text
Strutture Dati
Slide 30
Slide 30 text
ES5
Array e Oggetti
Slide 31
Slide 31 text
ES6
Typed Array, Set, Map, WeakSet, WeakMap
Slide 32
Slide 32 text
SUPPORTO
Slide 33
Slide 33 text
"If you haven’t learned ES6 yet, the time is now."
Slide 34
Slide 34 text
Vista la recente pubblicazione, non tutte le nuove
funzionalità sono supportate dai JavaScript engine più
diffusi ma ....
http://kangax.github.io/compat-table/es6/
Slide 35
Slide 35 text
... non c'è da preoccuparsi!
Questi due tool (i cosìddetti transpiler) forniscono tutto
quello di cui abbiamo bisogno.
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Babel e Traceur sono dei compilatori JavaScript.
Trasformano il tuo codice ES6 in ES5.
Slide 38
Slide 38 text
Entrambi sono degli eccellenti compilatori.
Ci sono solamente due differenze importanti:
Babel converte in un codice più leggibile
Traceur non supporta JSX
Slide 39
Slide 39 text
ES6 ED I TASK MANAGER
Slide 40
Slide 40 text
Le community opensource ha creato diversi plugin per i più
famosi task manager.
Slide 41
Slide 41 text
Con Gulp 3.9, ora possiamo utilizzare ES6 grazie a vari
plugin: tra i più famosi troviamo, gulp-babel, gulp-traceur e
gulp-regenerator (consigliato da Addy Osmani).
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
Anche per chi utilizza Grunt non ci sono problemi, infatti
sono disponibili plugin sia per Babel con grunt-babel, sia per
Traceur con grunt-traceur
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
ES6
ED I MODULE LOADER
Slide 46
Slide 46 text
Chi utilizza Webpack o Browserify può stare tranquillo ed
inizare ad utilizzare ES6 senza problemi grazie a...