SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
MEAN
MongoDB, ExpressJS, AngularJS, NodeJS
© 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
© Ibuildings 2013 - All rights reserved
NodeJS
© 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
© 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
© 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…
© Ibuildings 2013 - All rights reserved
Perché dovrei scegliere
Node.JS?
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© Ibuildings 2013 - All rights reserved
Node.JS ok, ma per cosa?
© 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
© 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)
© 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
© 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
© Ibuildings 2013 - All rights reserved
Allora Node.JS è la soluzione a
tutti i miei mali?
© 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
© 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
© 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
© Ibuildings 2013 - All rights reserved
Node.JS il loop di eventi
© 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
© 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
© Ibuildings 2013 - All rights reserved
Il core di Node.JS
© 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
© Ibuildings 2013 - All rights reserved
Chi usa Node.JS in produzione?
© 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
© Ibuildings 2013 - All rights reserved
ExpressJS
© 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
© 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
© 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
© 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);
© 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/
© Ibuildings 2013 - All rights reserved
© 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)
© 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
© 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
© Ibuildings 2013 - All rights reserved
Supporto
Angular permette due tipi di supporto
 Google
 Community
© 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
© 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)
© Ibuildings 2013 - All rights reserved
Pitfall
 Sviluppo non tradizionale
 Deve essere affiancato da un framework CSS
 Inadeguato per certe tipologie di web app
© Ibuildings 2013 - All rights reserved
Current State
 Versione stabile 1.2.x
 Compatibilità fino a IE8
 108Kb minified
 ~1500 moduli (ngmodules.org & bower.io)
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

Mais conteúdo relacionado

Mais procurados

Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperStefano Ottaviani
 
ModulAngular
ModulAngularModulAngular
ModulAngularextrategy
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016Michele Nasti
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.l
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormAndrea Dottor
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiGiuneco S.r.l
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!Salvatore Laisa
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 

Mais procurados (20)

Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Angularjs
AngularjsAngularjs
Angularjs
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
 
ModulAngular
ModulAngularModulAngular
ModulAngular
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
AngularJS 2.0
AngularJS 2.0 AngularJS 2.0
AngularJS 2.0
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
Blazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo GrecoBlazor with .net 5 - di Gerardo Greco
Blazor with .net 5 - di Gerardo Greco
 
Blazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web FormBlazor per uno sviluppatore Web Form
Blazor per uno sviluppatore Web Form
 
Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
Ajaxare WordPress
Ajaxare WordPressAjaxare WordPress
Ajaxare WordPress
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 

Destaque

7 free Visual Studio extensions
7 free Visual Studio extensions 7 free Visual Studio extensions
7 free Visual Studio extensions Vlad Mysla
 
Corso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptCorso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptStudiabo
 
Apache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionApache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionGabriele Falasca
 
Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Giancarlo Valente
 
V. liqviat 2009
V. liqviat 2009V. liqviat 2009
V. liqviat 2009nera24mx
 
Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccLuciano Colosio
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e PostgresqlLucio Grenzi
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayStudiabo
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScriptRoberto Messora
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsClaudio Mignanti
 
Open Source BPM in Java
Open Source BPM in JavaOpen Source BPM in Java
Open Source BPM in JavaDavid Noble
 
Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3John Bertucci
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2Dawid Myslak
 

Destaque (20)

docPorter
docPorterdocPorter
docPorter
 
7 free Visual Studio extensions
7 free Visual Studio extensions 7 free Visual Studio extensions
7 free Visual Studio extensions
 
Bagian c
Bagian cBagian c
Bagian c
 
Corso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptCorso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascript
 
node.js everywhere
node.js everywherenode.js everywhere
node.js everywhere
 
Apache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionApache Cordova: Overview and Introduction
Apache Cordova: Overview and Introduction
 
Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?
 
V. liqviat 2009
V. liqviat 2009V. liqviat 2009
V. liqviat 2009
 
Aulas linux
Aulas linuxAulas linux
Aulas linux
 
Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici ecc
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e Postgresql
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearray
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejs
 
Open Source BPM in Java
Open Source BPM in JavaOpen Source BPM in Java
Open Source BPM in Java
 
Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
 

Semelhante a Il Web orientato al futuro: Express, Angular e nodeJS

Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Massimo Caliman
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfFlorence Consulting
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileRoberto Cappelletti
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalyPaolo Dadda
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventorfdizazzo
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 

Semelhante a Il Web orientato al futuro: Express, Angular e nodeJS (20)

Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobile
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 

Mais de Eugenio Minardi

Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Eugenio Minardi
 
ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)Eugenio Minardi
 
ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)Eugenio Minardi
 
ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)Eugenio Minardi
 
ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)Eugenio Minardi
 
ExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteEugenio Minardi
 
Distributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesDistributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesEugenio Minardi
 
A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)Eugenio Minardi
 
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)Eugenio Minardi
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Eugenio Minardi
 
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Eugenio Minardi
 
PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)Eugenio Minardi
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Eugenio Minardi
 
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Eugenio Minardi
 
The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)Eugenio Minardi
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Eugenio Minardi
 
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Eugenio Minardi
 
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...Eugenio Minardi
 
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Eugenio Minardi
 
Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Eugenio Minardi
 

Mais de Eugenio Minardi (20)

Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)
 
ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)
 
ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)
 
ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)
 
ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)
 
ExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteExtJS: La piattaforma vincente
ExtJS: La piattaforma vincente
 
Distributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesDistributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and Advantages
 
A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)
 
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
 
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
 
PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
 
The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...
 
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
 
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
 
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
 
Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)
 

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
  • 3. © Ibuildings 2013 - All rights reserved NodeJS
  • 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…
  • 7. © Ibuildings 2013 - All rights reserved Perché dovrei scegliere Node.JS?
  • 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
  • 15. © Ibuildings 2013 - All rights reserved Node.JS ok, ma per cosa?
  • 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
  • 24. © Ibuildings 2013 - All rights reserved Node.JS il loop di eventi
  • 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
  • 27. © Ibuildings 2013 - All rights reserved Il core di Node.JS
  • 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
  • 29. © Ibuildings 2013 - All rights reserved Chi usa Node.JS in produzione?
  • 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
  • 31. © Ibuildings 2013 - All rights reserved ExpressJS
  • 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/
  • 37. © Ibuildings 2013 - All rights reserved
  • 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