More Related Content Similar to Il Web orientato al futuro: Express, Angular e nodeJS (20) More from Eugenio Minardi (20) Il Web orientato al futuro: Express, Angular e nodeJS 2. © Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved
Vincenzo (Wilk) Ferrari
▪ Fullstack Web Developer & Software Engineer
▪ Open Source supporter
▪ Javascript ninja
@__wilky__
https://github.com/wilk
vincenzo@ibuildings.it
4. © Ibuildings 2013 - All rights reserved
Cosa è Node.JS
Node.JS è una piattaforma software
utilizzata
per costruire applicazioni scalabili
particolarmente per il lato server-side
per gestire un elevato throughput
5. © Ibuildings 2013 - All rights reserved
La storia di Node.JS
Node.JS è stato creato da Ryan Dahl
Il progetto ha avuto inizio nel 2009
Nasce dall’idea ottenuta osservando una progress-bar
evoluta su Flickr (Il client non sa quanto manca)
Necessità di eventi in push
Preceduto da una serie di fallimenti in C, Lua e Haskell
Basato sul motore Javascript di Chrome chiamato V8
Il progetto si è spostato dalla semplice idea iniziale fino a
diventare l’oggetto che è ora
6. © Ibuildings 2013 - All rights reserved
I simili di Node.JS
Altri linguaggi offrono piattaforme simili a Node.JS
Tornado e Twisted in Python
libevent in C
Vert.X in Java, JavaScript, Groovy, Python and Ruby (Su JVM)
Akka in Scala
EventMachine in Ruby
e molti altri…
8. © Ibuildings 2013 - All rights reserved
Perchè scegliere Node.JS?
Familiarità con il linguaggio, anche i programmatori di front
end lo conoscono
Tempi di sviluppo ridotti, rispetto a tecnologie più tradizionali
per svolgere operazioni realtime/asincrone
Framework leggero, costi di infrastruttura ridotti, necessità
minore hardware a parità di prestazione
Gestione nativa dei JSON, non servono livelli hardware o
software intermedi
carico di lavoro condiviso con il client, meno carico sul
server, più utenti contemporanei con lo stesso hardware
9. © Ibuildings 2013 - All rights reserved
Performance
I punti di forza che rendono Node.JS performante sono
I grandi del settore competono sui motori Javascript (Mozilla,
Google, Apple, Microsoft, Opera)
V8 di Google è diventato estremamente performante
Modello non bloccante di Node.JS
Software leggero
Possibilità di gestire migliaia di connessioni contemporanee
su una dotazione hardware nella media
10. © Ibuildings 2013 - All rights reserved
Supporto - Società alle spalle
Lo sviluppo di Node.JS è sponsorizzato da Joyent
Il rischio di progetti giovani è la mancanza di supporto da
parte di una corporate
La spinta societaria ne garantisce le fondamenta
Il progetto è attivo e supportato
11. © Ibuildings 2013 - All rights reserved
Supporto - Community
La community è molto attiva
crescita costante
elevato numero di moduli
gruppi e canali di aiuto
Il progetto è attivo e supportato
12. © Ibuildings 2013 - All rights reserved
Reperibilità di sviluppatori
Javascript è probabilmente il linguaggio più conosciuto
familiarità del linguaggio
praticamente tutti hanno avuto esperienze d’uso
è impossibile da evitare se si sviluppa per il web
c’è quindi un largo numero di sviluppatori che possano
diventare sviluppatori Node.JS
13. © Ibuildings 2013 - All rights reserved
Centralizzazione degli sforzi
Esiste un portale dedicato ai moduli sviluppati dalla community
facile reperibilità dei moduli
tracciamento delle versioni
tracciamento dei bug
meno ridondanze
codice controllato da più utenti
statistiche di uso
14. © Ibuildings 2013 - All rights reserved
Per sintetizzare
I motivi che rendono forte Node.JS sono
Abbattimento dei costi dell’infrastruttura
Diminuzione dei tempi di sviluppo
Reperibilità di sviluppatori
Aumento delle performance
Supporto della community e corporate
Disponibilità di svariati moduli
16. © Ibuildings 2013 - All rights reserved
Per cosa usare Node.JS?
API per un applicazione
Supporto nativo di JSON
Implementazione leggera di REST
Modello I/O non bloccante
17. © Ibuildings 2013 - All rights reserved
Per cosa usare Node.JS?
Utilizzo di strumenti nativi / shell
possibilità di sfruttare software esistenti
non reinventare la ruota
rapida creazione di processi
gestione degli output come flussi (stream)
18. © Ibuildings 2013 - All rights reserved
Per cosa usare Node.JS?
Creare e gestire flussi di dati (stream)
distaccarsi dal modello request/response come eventi
atomici
come per l’esempio dell’upload del file e della progress bar
19. © Ibuildings 2013 - All rights reserved
Per cosa usare Node.JS?
Applicazioni single page o con molte aree indipendenti
e in tempo reale
ogni sezione, ogni blocco opera in modo indipendente
esempio applicazione browser di Gmail
tempi di risposta molto bassi
carico di lavoro condiviso con il client
20. © Ibuildings 2013 - All rights reserved
Allora Node.JS è la soluzione a
tutti i miei mali?
21. © Ibuildings 2013 - All rights reserved
Per cosa NON usare Node.JS?
Applicazioni di elaborazione intensiva di dati
calcoli pesanti
tempi di calcolo lunghi
si perde la caratteristica non bloccante
la parte di calcolo supera le operazioni di I/O
22. © Ibuildings 2013 - All rights reserved
Per cosa NON usare Node.JS?
Sostituzione generalista di applicazioni (CMS o altro)
Node.JS non va usato indistintamente
Non si può pensare di sostituire tutto il software già esistente
Ogni strumento va usato per il proprio scopo
Evitare la tendenza a reinventare la ruota
23. © Ibuildings 2013 - All rights reserved
Per cosa NON usare Node.JS?
Sostituzione di server per i file statici
Node.JS non vuole sostituire gli altri web server
25. © Ibuildings 2013 - All rights reserved
Node.JS il loop di eventi
Node.JS è un’applicazione single thread
Tutti gli eventi gestiti sono asincroni
Vengono eseguiti da un thread-pool interno
Le funzioni di callback gestiscono gli eventi
26. © Ibuildings 2013 - All rights reserved
Node.JS il loop di eventi
Ad ogni evento Node.JS risponde associando una callback
L’operazione è veloce
Quando il risultato della callback è pronto viene restituito
Non è bloccante
28. © Ibuildings 2013 - All rights reserved
CommonJS
Node.JS aderisce ad un progetto più ampio di specifiche per
definire un ecosistema di API javascript tra loro compatibili
La raccolta è disponibile su http://www.commonjs.org/specs/
Molte sono ancora in fase di sviluppo e approvazione
Non tutte sono implementate in Node.JS
30. © Ibuildings 2013 - All rights reserved
Chi usa Node.JS in produzione?
Nonostante la giovane età Node.JS è già utilizzato per grandi
progetti
Linkedin - Motore dell’applicazione mobile
Ebay - Gateway in http http://ql.io
Paypal - Ha creato un Framework, base di tutte le loro
applicazioni http://krakenjs.com
Myspace - http://expressjs.com/applications.html
E molti altri -
https://github.com/joyent/node/wiki/Projects,-Applications,
-and-Companies-Using-Node
32. © Ibuildings 2013 - All rights reserved
Express
Express è il framework più utilizzato per lo sviluppo di
applicazioni Node.JS
si ispira a Sinatra (Ruby)
è diventato ormai di uso standard
si installa facilmente con NPM
33. © Ibuildings 2013 - All rights reserved
Express Features
express è il framework più utilizzato per lo sviluppo di
applicazioni Node.JS. Prevede le seguenti features:
Robust routing
HTTP helpers (redirection, caching, etc)
14+ supported template engines
Content negotiation
Focus on high performance
Executable for generating applications quickly
High test coverage
34. © Ibuildings 2013 - All rights reserved
Express
Differenze tra middleware e framework
Nella terminologia Node.JS si usa middleware per definire
un modulo (o insieme di moduli) che definisca delle funzioni
senza avere un set di utilità specifiche
Il middleware dà le basi per un framework
Il framework implementa le funzioni di utilità e stabilisce
delle linee guida per il proprio utilizzo
Vengono chiamate middleware anche le funzioni esposte
dal middleware stesso (come abbreviazione di funzione di
middleware)
Si appoggia su un middleware chiamato Connect
35. © Ibuildings 2013 - All rights reserved
Express
Come creare un middleware:
// ./lib/myMiddleware.js
module.exports = function (req, res, next) {
// logic here
};
// ./app.js
var app = require('express')(),
myMiddleware = require('./lib(myMiddleware');
app.use(myMiddleware);
36. © Ibuildings 2013 - All rights reserved
Express
Lista di middleware più comuni:
Logger
Compress
BasicAuth
JSON
BodyParser
CookieParser
Query
Ulteriori middleware: http://www.senchalabs.org/connect/
38. © Ibuildings 2013 - All rights reserved
Cos'è AngularJS
Framework Javascript creato da Google per realizzare ricche e
moderne applicazioni web
https://angularjs.org
Nato nel 2009
Creato con l'idea di evitare la manipolazione diretta del DOM
Multipattern (MVC, MVVM)
39. © Ibuildings 2013 - All rights reserved
Filosofia
Angular estende il vocabolario HTML con elementi e attributi
personalizzati per servire pagine web dinamiche attraverso il
two-ways data-binding
Disaccoppiamento tra la manipolazione del DOM e la logica
dell'applicazione
Facile testabilità del codice
Sviluppo parallelo del client e del server
Strutturare l'applicazione tramite servizi e direttive
40. © Ibuildings 2013 - All rights reserved
Features
Model-View-View-Model
Template engine
Direttive
Servizi
Routing client-side
Dependency Injection
Validazione form avanzata
I18n e l10n
Filtri ed espressioni
41. © Ibuildings 2013 - All rights reserved
Supporto
Angular permette due tipi di supporto
Google
Community
42. © Ibuildings 2013 - All rights reserved
Per cosa usare AngularJS?
Adatto per realizzare applicazioni web e mobile altamente
customizzate:
Applicazioni web single-page
Applicazioni mobile
Necessità di personalizzazione
43. © Ibuildings 2013 - All rights reserved
Cosa offre AngularJS?
Sviluppo in puro Javascript
Alta modularità
Automatizzazione
Facile integrazione con librerie di terze parti
Integrazione con diversi webframework (SailsJS, Ionic,
Yeoman)
44. © Ibuildings 2013 - All rights reserved
Pitfall
Sviluppo non tradizionale
Deve essere affiancato da un framework CSS
Inadeguato per certe tipologie di web app
45. © Ibuildings 2013 - All rights reserved
Current State
Versione stabile 1.2.x
Compatibilità fino a IE8
108Kb minified
~1500 moduli (ngmodules.org & bower.io)
46. Ibuildings ITALIA
Finalmente le tue APP Web & Mobile diventano
GRANDI
Ibuildings
Rappresentanza per l’Italia
Via Santa Maria Valle, 3
20123 Milano
info@ibuildings.it
www.ibuildings.it