SlideShare a Scribd company logo
The Sexy Platform
Michele Nasti
Napoli Dev Day - Rework - 24/02/2016
Chi sono?
http://michelenasti.com
Twitter (@micnasti)
Linkedin
Facebook
... e tutti gli altri servizi on line
(Stack Overflow, Github, ....)
What is NodeJS ?
- Node NON E’ un webserver
- … è un modo come un altro per eseguire codice sulla
propria macchina
Node.js® is a JavaScript runtime built on Chrome's
V8 JavaScript engine. Node.js uses an event-
driven, non-blocking I/O model that makes it
lightweight and efficient.
Installazione e primo avvio
- installer per Win, Mac & Linux su nodejs.org
- node console (REPL):
$ node
> console.log('Hello World');
Hello World
undefined
- Oppure creare un file che contiene
- console.log('Hello World')
Proviamo a fare le cose serie
- Supponiamo di avere un file di log di questo tipo:
2013-08-09T13:50:33.166Z A 2
2013-08-09T13:51:33.166Z B 1
2013-08-09T13:52:33.166Z C 6
2013-08-09T13:53:33.166Z B 8
2013-08-09T13:54:33.166Z B 5
- Scriviamo un parser per SOMMARE i numeri per ogni lettera
- Output atteso:
{ A : 2, B: 14, C: 6}
“vuttamm e’
mman:”
un Parser in JS
Thread pool vs Single-Threaded
Callback Asincrone
- è il meccanismo preferito in NodeJS : “quando hai completato
l’operazione, esegui questo codice”
- “il 99% del tempo di una webapp è speso aspettando dati dal DB”
- “Callback Hell” ⇒
Organizzazione del Codice
- Come organizzare il codice in più file (classi…
moduli… ) ?
- Node is not Ruby on Rails!
- … potete fare quel che volete
- fate ciò che gli altri hanno già fatto bene, please!
- Refattorizziamo il Parser che abbiamo scritto prima!
A better Parser
Un
(semplicissimo)
webserver in
NodeJS
my_web_server.js
- very “basic”
- Il programma non “termina” (Ctrl+C)
- MA …
- Servire file?
- check parameters?
- routes?
- Soluzione: EXPRESS !
Come installarlo? Con NPM! (quindi vediamo prima NPM)
NPM
npm install express --save
package.json:
Node Package Manager
https://www.npmjs.com/
A REST server
with Express
(where is the GIF?)
(Using a Javascript framework
for the first time)
Performance
L’approccio Event-based / Async IO
paga?
Alcune comparison con PHP
Nota: HHVM è JIT + Async I/O
Vantaggi
Svantaggi
You already know JS
Build tools in JS too! (npm, grunt,
express…)
very fast JIT interpreter
amazing community
Some DBs (MongoDB) are written with JS
in mind
real-time made easy
support for high concurrency
Corporate backup (Joyent)
PaaS support NODE
NodeJS è ancora bleeding edge: altri
linguaggi più blasonati hanno decenni
di stabilità alle spalle
(poor) IDE Support
no strong typing
nothing is really market standard
(neither Express)
that’s open source, baby
Standard library is poor or too new or
unstable
Synchronous Style is easier to think
about and program
Javascript
Everywhere
Meetup
Javascript &
NodeJS
a Salerno!
Sabato 5 Marzo 2016
presso “Puntolingue” di fianco a
Italo
primo binario, stazione FF.SS.
Salerno
http://www.meetup.com/it-IT/JS-
Salerno/events/228723943/
Risorse utili
- Tutorial “advanced” per Express:
https://scotch.io/tutorials/build-a-restful-api-using-
node-and-express-4
- ExpressJS : http://expressjs.com/
Build tools:
- Grunt http://gruntjs.com/
- Gulp http://gulpjs.com/
Frontend:
Bye!
Questo gatto conosce l’event loop di NodeJS

More Related Content

What's hot

WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
Francesco Terenzani
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Marco Parenzan
 
Task automation with grunt
Task automation with gruntTask automation with grunt
Task automation with grunt
lucatume
 
ASP .NET Core hands-on
ASP .NET Core hands-onASP .NET Core hands-on
ASP .NET Core hands-on
ugidotnet
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
Andrea Dottor
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
marcocasario
 
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
Commit University
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
Andrea Dottor
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricerca
Tiziano Fogliata
 
SLA Confidential
SLA ConfidentialSLA Confidential
SLA Confidential
VMUG IT
 
Making Chatbots
Making ChatbotsMaking Chatbots
Making Chatbots
Paolo Montrasio
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di node
Francesco Sciuti
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
Commit University
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
Davide Cerbo
 
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Marco Chiesi
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Codemotion
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
Marco Breveglieri
 
Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with Blazor
Michele Aponte
 

What's hot (20)

WPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerceWPO: Ottimizzazione step-by-step del front-end di un e-commerce
WPO: Ottimizzazione step-by-step del front-end di un e-commerce
 
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Task automation with grunt
Task automation with gruntTask automation with grunt
Task automation with grunt
 
ASP .NET Core hands-on
ASP .NET Core hands-onASP .NET Core hands-on
ASP .NET Core hands-on
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
 
Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniCreare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
Ottimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricercaOttimizzare WordPress non solo per i motori di ricerca
Ottimizzare WordPress non solo per i motori di ricerca
 
SLA Confidential
SLA ConfidentialSLA Confidential
SLA Confidential
 
Making Chatbots
Making ChatbotsMaking Chatbots
Making Chatbots
 
Deno - L'anagramma di node
Deno - L'anagramma di nodeDeno - L'anagramma di node
Deno - L'anagramma di node
 
Grasso
GrassoGrasso
Grasso
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with Blazor
 

Viewers also liked

Compras em orlando
Compras em orlandoCompras em orlando
Compras em orlando
Dicas Orlando
 
Healthy leaders
Healthy leadersHealthy leaders
Healthy leaders
PGPT
 
Dan Cantone
Dan CantoneDan Cantone
Dan Cantone
Dan Cantone
 
Trabajo final de grado correcciones
Trabajo final de grado correccionesTrabajo final de grado correcciones
Trabajo final de grado correcciones
PRECOZ LTDA
 
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
rcatanese
 
God With Us? Origen of Evil
God With Us? Origen of EvilGod With Us? Origen of Evil
God With Us? Origen of Evil
Bert Snyder
 
Revista Musica & Mercado
Revista Musica & MercadoRevista Musica & Mercado
Revista Musica & Mercado
Música & Mercado
 
Ahmed saied cv_2016
Ahmed saied cv_2016Ahmed saied cv_2016
Ahmed saied cv_2016
Ahmed Saied
 
Agile Software Development with Remote Teams
Agile Software Development with Remote TeamsAgile Software Development with Remote Teams
Agile Software Development with Remote Teams
MentorMate
 
Goals on every level - Delivery Leads Melbourne
Goals on every level - Delivery Leads MelbourneGoals on every level - Delivery Leads Melbourne
Goals on every level - Delivery Leads Melbourne
Tom Sommer
 
Secuencia didactica 1 grado. meduca
Secuencia didactica 1 grado.  meducaSecuencia didactica 1 grado.  meduca
Secuencia didactica 1 grado. meduca
Veira Rodrìguez
 

Viewers also liked (13)

Compras em orlando
Compras em orlandoCompras em orlando
Compras em orlando
 
Test smt
Test smtTest smt
Test smt
 
Healthy leaders
Healthy leadersHealthy leaders
Healthy leaders
 
Dan Cantone
Dan CantoneDan Cantone
Dan Cantone
 
504
504504
504
 
Trabajo final de grado correcciones
Trabajo final de grado correccionesTrabajo final de grado correcciones
Trabajo final de grado correcciones
 
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
Catanese indica melhorias no cruzamento das vias Arlindo Fava e Augusto Baras...
 
God With Us? Origen of Evil
God With Us? Origen of EvilGod With Us? Origen of Evil
God With Us? Origen of Evil
 
Revista Musica & Mercado
Revista Musica & MercadoRevista Musica & Mercado
Revista Musica & Mercado
 
Ahmed saied cv_2016
Ahmed saied cv_2016Ahmed saied cv_2016
Ahmed saied cv_2016
 
Agile Software Development with Remote Teams
Agile Software Development with Remote TeamsAgile Software Development with Remote Teams
Agile Software Development with Remote Teams
 
Goals on every level - Delivery Leads Melbourne
Goals on every level - Delivery Leads MelbourneGoals on every level - Delivery Leads Melbourne
Goals on every level - Delivery Leads Melbourne
 
Secuencia didactica 1 grado. meduca
Secuencia didactica 1 grado.  meducaSecuencia didactica 1 grado.  meduca
Secuencia didactica 1 grado. meduca
 

Similar to Node js dev day napoli 2016

Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
Matteo Napolitano
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Matteo Baccan
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
Francesco Collova'
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
Nicola Del Gobbo
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
Davide Cerbo
 
Introduzione ros
Introduzione rosIntroduzione ros
Introduzione ros
Marco Buttolo
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearray
Studiabo
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
Michele Capra
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
Vito Flavio Lorusso
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the boss
Claudio Cicali
 
Web base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di baseWeb base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di base
Annalisa Vignoli
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
Gabriele Baldoni
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Codemotion
 
Html5
Html5Html5
Lavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.comLavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.com
Simone Chiaretta
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejs
Claudio Mignanti
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 

Similar to Node js dev day napoli 2016 (20)

Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
Introduzione ros
Introduzione rosIntroduzione ros
Introduzione ros
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearray
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Oltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale SetOltre il Worker Role, da Serverless computing a VM Scale Set
Oltre il Worker Role, da Serverless computing a VM Scale Set
 
Node.js – Convincing the boss
Node.js – Convincing the bossNode.js – Convincing the boss
Node.js – Convincing the boss
 
Web base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di baseWeb base - Javascript (Node.js): Elementi di base
Web base - Javascript (Node.js): Elementi di base
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
 
Html5
Html5Html5
Html5
 
Lavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.comLavorare con applicazioni Brownfield: il caso di 39x27.com
Lavorare con applicazioni Brownfield: il caso di 39x27.com
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejs
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 

Node js dev day napoli 2016

  • 1. The Sexy Platform Michele Nasti Napoli Dev Day - Rework - 24/02/2016
  • 2. Chi sono? http://michelenasti.com Twitter (@micnasti) Linkedin Facebook ... e tutti gli altri servizi on line (Stack Overflow, Github, ....)
  • 3. What is NodeJS ? - Node NON E’ un webserver - … è un modo come un altro per eseguire codice sulla propria macchina Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event- driven, non-blocking I/O model that makes it lightweight and efficient.
  • 4. Installazione e primo avvio - installer per Win, Mac & Linux su nodejs.org - node console (REPL): $ node > console.log('Hello World'); Hello World undefined - Oppure creare un file che contiene - console.log('Hello World')
  • 5. Proviamo a fare le cose serie - Supponiamo di avere un file di log di questo tipo: 2013-08-09T13:50:33.166Z A 2 2013-08-09T13:51:33.166Z B 1 2013-08-09T13:52:33.166Z C 6 2013-08-09T13:53:33.166Z B 8 2013-08-09T13:54:33.166Z B 5 - Scriviamo un parser per SOMMARE i numeri per ogni lettera - Output atteso: { A : 2, B: 14, C: 6}
  • 7. Thread pool vs Single-Threaded
  • 8. Callback Asincrone - è il meccanismo preferito in NodeJS : “quando hai completato l’operazione, esegui questo codice” - “il 99% del tempo di una webapp è speso aspettando dati dal DB” - “Callback Hell” ⇒
  • 9. Organizzazione del Codice - Come organizzare il codice in più file (classi… moduli… ) ? - Node is not Ruby on Rails! - … potete fare quel che volete - fate ciò che gli altri hanno già fatto bene, please! - Refattorizziamo il Parser che abbiamo scritto prima!
  • 12. my_web_server.js - very “basic” - Il programma non “termina” (Ctrl+C) - MA … - Servire file? - check parameters? - routes? - Soluzione: EXPRESS ! Come installarlo? Con NPM! (quindi vediamo prima NPM)
  • 13. NPM npm install express --save package.json: Node Package Manager https://www.npmjs.com/
  • 14. A REST server with Express (where is the GIF?)
  • 15. (Using a Javascript framework for the first time)
  • 16. Performance L’approccio Event-based / Async IO paga? Alcune comparison con PHP Nota: HHVM è JIT + Async I/O
  • 17. Vantaggi Svantaggi You already know JS Build tools in JS too! (npm, grunt, express…) very fast JIT interpreter amazing community Some DBs (MongoDB) are written with JS in mind real-time made easy support for high concurrency Corporate backup (Joyent) PaaS support NODE NodeJS è ancora bleeding edge: altri linguaggi più blasonati hanno decenni di stabilità alle spalle (poor) IDE Support no strong typing nothing is really market standard (neither Express) that’s open source, baby Standard library is poor or too new or unstable Synchronous Style is easier to think about and program
  • 19. Meetup Javascript & NodeJS a Salerno! Sabato 5 Marzo 2016 presso “Puntolingue” di fianco a Italo primo binario, stazione FF.SS. Salerno http://www.meetup.com/it-IT/JS- Salerno/events/228723943/
  • 20. Risorse utili - Tutorial “advanced” per Express: https://scotch.io/tutorials/build-a-restful-api-using- node-and-express-4 - ExpressJS : http://expressjs.com/ Build tools: - Grunt http://gruntjs.com/ - Gulp http://gulpjs.com/ Frontend:
  • 21. Bye! Questo gatto conosce l’event loop di NodeJS

Editor's Notes

  1. check: terminale aperto ? sublime aperto ? finalità: infarinatura dei concetti alla base prerequisiti: zero per quanto riguarda node, intermediate per javascript. Sapere cos’è callback, prototype. useremo un po’ di es6 Obiettivi: infarinatura di concetti su Node, stimolare la curiosità.
  2. sul mio sito web troverete le slide. Diventiamo amici! accetto tutti. E parliamo di programmazione.
  3. - perchè node: l’autore l’ha creato per la barra di upload di flickr - v8: alla base c’è lo stesso motore di chrome aggiornato, quindi es6 e altre feature Alla base di Node ci sono due concetti fondamentali: - event-driven come per le UI, quando accade un evento (tipo: ho letto un file) eseguo un compito. Non aspetto la lettura - non blocking I/O: le chiamate a I/O (rete, file…) vengono eseguite in maniera asincrona e quando il task completa il controllo ritorna alla callback.
  4. Facilissimo installarlo 2 modi per eseguire Node: dalla REPL cosa è undefined ? e lanciando il file da riga di comando
  5. abbiamo un log con una serie di “eventi” vogliamo sommare i numeri di fianco a questi eventi per produrre un summary come si fa in Node?
  6. aprire file parser_complete.js Cose da dire sul codice: come si importano i moduli tutto è asincrono (vedi readFile) standard error handling l’importanza di un buon editor, specialmente all’inizio (se si vuole un minimo di code assist…) la classe Buffer di Node (diversa da String)
  7. in altri linguaggi di programmazione il thread resterebbe bloccato in attesa dei dati. Ricorda definizione: “Non Blocking I/O Model” In Node invece il thread delega l’I/O a altri thread che quando terminano l’accesso restituiscono il risultato alla callback. Quando l’event-loop di Node scopre che il thread ha terminato, esegue la callback associata. Questo permette di eseguire altri eventi nel frattempo
  8. non è Rails apri: refactored_parser && refactored_file_parser parlare di : exports e module.exports
  9. vedi file my_web_Server.js
  10. Npm è il package manager ufficiale di node è preinstallato permette di installare anche altri sw tipo bower… eslint … creare file package.json con nome e descrizione con --save si salvano le dep in dependencies si crea una cartella “node_modules” nel proj
  11. (where is the GIF ?!)
  12. Ora fai vedere l’esempio con Express. npm install (per le dipendenze) file server.js , node server.js GET da browser