Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Treviso JS JavaScript e Prosecco a Treviso

Slide 3

Slide 3 text

ES6: Javascript Oggi

Slide 4

Slide 4 text

Speakers

Slide 5

Slide 5 text

Robert Casanova

Slide 6

Slide 6 text

Nicholas Ruggeri

Slide 7

Slide 7 text

Cosa vedremo oggi?

Slide 8

Slide 8 text

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...

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Webpack: Browserify: https://github.com/babel/babel-loader https://github.com/babel/babelify

Slide 49

Slide 49 text

CONCLUDENDO

Slide 50

Slide 50 text

Se utilizzate task-manager, modules loader o iniziate un nuovo progetto...

Slide 51

Slide 51 text

... non avete più scuse per non iniziare ad usare ES6.

Slide 52

Slide 52 text

"ES6 is JavaScript."

Slide 53

Slide 53 text

CONTATTI

Slide 54

Slide 54 text

facebook.com/trevisojs treviso.js.org @nicksruggeri @robb_casanova

Slide 55

Slide 55 text

BRAVI TUTTI. GRAZIE.

Slide 56

Slide 56 text

DOMANDE?