Il Web orientato al futuro: Express, Angular e nodeJS

2,650 views

Published on

Vincenzo Ferrari @ MEAN Conference - 9 giugno 2014

Published in: Internet

Il Web orientato al futuro: Express, Angular e nodeJS

  1. 1. MEAN MongoDB, ExpressJS, AngularJS, NodeJS
  2. 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. 3. © Ibuildings 2013 - All rights reserved NodeJS
  4. 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. 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. 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. 7. © Ibuildings 2013 - All rights reserved Perché dovrei scegliere Node.JS?
  8. 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. 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. 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. 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. 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. 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. 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. 15. © Ibuildings 2013 - All rights reserved Node.JS ok, ma per cosa?
  16. 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. 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. 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. 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. 20. © Ibuildings 2013 - All rights reserved Allora Node.JS è la soluzione a tutti i miei mali?
  21. 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. 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. 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. 24. © Ibuildings 2013 - All rights reserved Node.JS il loop di eventi
  25. 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. 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. 27. © Ibuildings 2013 - All rights reserved Il core di Node.JS
  28. 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. 29. © Ibuildings 2013 - All rights reserved Chi usa Node.JS in produzione?
  30. 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. 31. © Ibuildings 2013 - All rights reserved ExpressJS
  32. 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. 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. 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. 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. 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. 37. © Ibuildings 2013 - All rights reserved
  38. 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. 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. 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. 41. © Ibuildings 2013 - All rights reserved Supporto Angular permette due tipi di supporto  Google  Community
  42. 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. 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. 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. 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. 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

×