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
© 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
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 ITALIAFinalmente le tue APP Web & Mobile diventano GRANDI
IbuildingsRappresentanza per l’ItaliaVia Santa Maria Valle, 320123 [email protected]
Top Related