Sviluppo web
ReactJS e ExtJS a confronto
speaker: marco breveglieri
marco
breveglieri
developer
www.compilaquindiva.com
AGENDA
➔ Le applicazioni Web
➔ Il linguaggio JavaScript
➔ Introduzione alle SPA
➔ La libreria ReactJS
➔ Dietro le quinte di React
➔ Backend in Delphi
le applicazioni
Web
Soluzioni per applicazioni Web a
confronto
Applicazioni Web?
NO!
WEB SERVER “FAT” APP
Soluzioni basate su
❖ IntraWeb
❖ ASP.NET Web Forms
sono applicazioni Web (Server) “Fat”
e non sono più una buona idea.
WEB SERVER “FAT” APP
PREGI
● Mascherano la piattaforma (HTTP)
● Facili per sviluppatori abituati al desktop
● Favoriscono lo sviluppo rapido (RAD)
● Sono ideali per la “prototipazione”
WEB SERVER “FAT” APP
DIFETTI
● Mascherano la piattaforma (HTTP)
● Stato della pagina “ingombrante”
● Consumo banda, memoria e CPU server
● Scalabilità generale ridotta
● Separazione task designer/developer improbabile
● Unit/Integration Test ardui
Applicazioni Web
moderne?
Si basano su standard del Web
● HTML(5)
● CSS(3)
● JavaScript
Linguaggi standard:
sono difficili?
Il linguaggio
JavaScript
Introduzione a JavaScript e al DOM
All’inizio era...
OGGI E’....
In evoluzione
Il linguaggio JavaScript vive oggi una
“seconda giovinezza”.
● Supporto esteso da parte dei browser
● Nuovi standard (es. ES6) in arrivo
● Output di linguaggi più evoluti come
TypeScript, CoffeeScript e tanti altri
NUOVE API html5
● Canvas / SVG
● WebGL
● File API
● Indexed DB
● Media API
● OFFline
● Web Sockets
● Web Workers
● Web Storage
● Geo-location API
● Fullscreen support
● ...e il sempre caro
DOM
Il “DOM”
Il DOM (Document Object Model)
● È un modello a oggetti
● È formato da una gerarchia di nodi
● Rappresenta gli elementi della pagina
Web
● Fornisce funzionalità per modificare gli
elementi, modificarli, eliminarli o crearne
di nuovi
demo time
JQUERY: un passo in +
JQuery è una libreria che
● Semplifica l’accesso al DOM
● Riutilizza le espressioni CSS
● Fornisce “feature” aggiuntive e uniformi
● Gestisce le incompatibilità tra i browser
...tuttavia, non è ancora abbastanza.
demo time
Introduzione
alle “SPA”
Single Page Application
SPA
SPA (Single Page Application)
● Applicazione Web in una sola pagina
● Mima le caratteristiche delle app desktop
● Esperienza utente più fluida
● Non ricarica la pagina nel browser
● L’interfaccia utente si aggiorna dinamicamente a
seguito di un’azione
● Trasferimento ottimizzato di dati e risorse
Per rendere l’idea
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Single Page Application</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="container">
<!-- Qui viene generata l’applicazione -->
</div>
<script src="framework.js"></script>
</body>
</html>
Librerie e framework
Let’s “REACT”!
ReactJS
La libreria ReactJS di Facebook™
ReactJS
➔ Libreria JavaScript per le interfacce utente
➔ Creata da Facebook (anche per Instagram)
➔ Nel modello MVC gestisce solo la “View”
➔ Celebre per le sue elevate prestazioni
➔ Basato su “componenti”, proprietà e stato
➔ Approccio dichiarativo (*) (*) usando JSX
https://facebook.github.io/react/
Facebook “Case Study”
Facebook “Case Study”
15.000+ componenti!
Componenti
➔ Incapsulati
➔ Riusabili
➔ Componibili
➔ Facili da disegnare *
(*) almeno in React
ReactJS vs...
JQuery
● Programmazione
imperativa
● Necessità di attribuire
ID agli elementi
● Tendenza “event
driven”
● Rischio concreto di
“zuppa-code”
AngularJS (ver. 1.x)
● Oscillante curva di
apprendimento (ma
framework completo)
● “Separation of
Responsibility” (invece
di “...of Concerns”)
● Proliferazione di
“scope” e direttive
Editor e tool
● Notepad++
● Sublime Text
● Atom.IO
● Brackets
● Visual Studio Code
● JetBrains
WebStorm
● Visual Studio
Professional
...con vari plugin
demo time
La sintassi “JSX”
➔ Facilita la scrittura di template HTML
➔ Sostituisce chiamate a funzioni React
➔ Richiede la presenza di un “compilatore”
(detto “transpiler”)
➔ Definisce gli elementi del Virtual DOM *
(*) ne parleremo a breve…
Proprietà e stato
Proprietà
● Definiscono valori
immutabili del
componente
● Utili per
inizializzazione
● Si leggono da this.
props
Stato
● Definisce valori dello
stato attuale del
componente
● Si modifica per
aggiornare l’interfaccia
● Si leggono i valori da
this.state
demo time
Dietro le
quinte
Il Virtual DOM… e oltre❗
I limiti del DOM
➔ Non è possibile modificare il codice
➔ E’ una “black box” fornita dal browser
➔ Non si può ottimizzare in prestazioni
➔ Non si può specializzare in base all’uso
➔ Impone uno stile “imperativo” di codifica
➔ Produce codice meno manutenibile
➔ Rappresenta un “collo di bottiglia”
Il “Virtual DOM”
➔ Rappresentazione virtuale della struttura
della pagina in memoria
➔ Riproduce il DOM reale della pagina Web
➔ Viene usato da React per applicare le
modifiche agli elementi della pagina
➔ Attraverso l’analisi delle differenze con il
DOM reale, aggiorna la pagina…
...nel modo più veloce possibile! ⚡⚡⚡
Gli elementi del VDOM
● ReactNode
rappresenta un singolo “nodo” del VDOM
○ ReactElement: rappresenta un elemento HTML
○ ReactText: rappresenta una porzione di testo
● ReactFragment
○ ReactNode[ ]: è un array di nodi del Virtual DOM
Creare elementi
I parametri della funzione createElement()
ReactElement createElement(
string/ReactClass type,
[object props],
[children ...]
)
demo time
Component lifecycle
Le funzioni principali del ciclo di vita di un componente:
● render()
● getInitialState()
● componentWillMount()
● componentDidMount()
● componentWillUnmount()
...e altri meno utilizzati.
demo time
Assemblare il tutto
Ricetta per combinare gli elementi visti sino ad ora:
● Creare la pagina di struttura della SPA
● Importare i framework preferiti (incluso React!)
● Creare script separati per i componenti
● Richiamare la funzione ReactDOM.render()
Vediamo ulteriori esempi!
demo time
Backend
Comunicare con il server
E Delphi?
➔ Ottimo per la creazione di un backend
➔ Diverse librerie disponibili per creare API
◆ DataSnap / EMS
◆ DelphiMVCFramework / MARS
◆ Indy Components
➔ Versatile nel collegamento a qualsiasi DB
➔ Si può invocare dall’applicazione React *
(*) con la libreria che si preferisce per il colloquio con endpoint HTTP/REST
demo time
Altro?
➔ Integrazione con altri framework
◆ Flux, Redux, ...
➔ Altre implementazioni?
◆ React Native
➔ Possibilità ed estensioni?
◆ Rendering sul server (con NodeJS)
➔ Migliorare il codice?
◆ Uso del transpiler “Babel”, pre-compiling server
Q & A
Dubbi, richieste, domande?
marco
breveglieri
developer
www.compilaquindiva.com
Delphi Succinctly: e-book di 100 pagine in lingua
inglese, scaricabile gratuitamente da Syncfusion Inc.
marco
breveglieri
developer
www.compilaquindiva.com
Delphi Podcast - www.delphipodcast.com
Il primo podcast italiano dedicato a Delphi.
marco
breveglieri
developer
www.compilaquindiva.com
@ComponentTales - https://twitter.com/ComponentTales
Scopri cosa fanno i componenti quando chiudi l’IDE.
grazie a tutti!

More Related Content

PDF
Applicazioni Web ultra-performanti con Vue.js e Delphi
PDF
REST API fantastiche e dove trovarle
PDF
Delphi & Dintorni Webinar - Diventa un mago del Testing
PPTX
AngularJS – Reinventare le applicazioni web
PPTX
Creare un Information Radiator con Delphi
PDF
Creare API pubbliche, come evitare gli errori comuni
PDF
Il Web orientato al futuro: Express, Angular e nodeJS
PPTX
Applicazioni Web ultra-performanti con Vue.js e Delphi
REST API fantastiche e dove trovarle
Delphi & Dintorni Webinar - Diventa un mago del Testing
AngularJS – Reinventare le applicazioni web
Creare un Information Radiator con Delphi
Creare API pubbliche, come evitare gli errori comuni
Il Web orientato al futuro: Express, Angular e nodeJS

What's hot (20)

PPTX
AngularJS 2.0
PDF
Angularjs
PDF
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
PPS
Sviluppo Web Agile Con MonoRail
PDF
Blazor per uno sviluppatore Web Form
PPTX
Asp.net web form 4.5 - what's new!!
ZIP
Introduzione a Ruby On Rails
PPT
Generazione Dinamica di Codice in .NET
PPTX
Cosa c'è di nuovo in asp.net core 2 0
PDF
Data binding libera tutti!
PPTX
Fe04 angular js-101
PPTX
Selenium e testing web - di Alessio Benedetti
PPTX
Asp.Net MVC 5
PPSX
Powerful asp.net 4 e ie9
PPTX
Novità in Visual Studio 2012
ODP
Sviluppo applicazioni in Ruby on Rails
PPTX
Blazor with .net 5 - di Gerardo Greco
PDF
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
PPT
Utilizzare Windows Vista come Software Developer
PDF
ReactJS for beginners
AngularJS 2.0
Angularjs
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Sviluppo Web Agile Con MonoRail
Blazor per uno sviluppatore Web Form
Asp.net web form 4.5 - what's new!!
Introduzione a Ruby On Rails
Generazione Dinamica di Codice in .NET
Cosa c'è di nuovo in asp.net core 2 0
Data binding libera tutti!
Fe04 angular js-101
Selenium e testing web - di Alessio Benedetti
Asp.Net MVC 5
Powerful asp.net 4 e ie9
Novità in Visual Studio 2012
Sviluppo applicazioni in Ruby on Rails
Blazor with .net 5 - di Gerardo Greco
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Utilizzare Windows Vista come Software Developer
ReactJS for beginners
Ad

Similar to Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza (20)

PDF
Introduzione a React Native - Alessandro Giannini
PPTX
Introduzione a React Native - Mokapp 2017
PPTX
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
PPTX
Come sviluppare applicazioni cross device con HTML
PPTX
J huery
PDF
How To React - Gestione Stato Applicativo
PDF
Acadevmy - PWA & Angular
PPTX
Sviluppare SPA con Vue
PDF
Angular js o React? Spunti e idee per la scelta di un framework
PPTX
Sviluppare SPA con Vue.js
PDF
Jquery mobile per App
PPTX
Single Page Applications
PDF
follow-ap DAY 4: HTML5 e jQuery
PDF
Presentazione tirocinio
PDF
Spa with Blazor
PDF
JavaScript
PPT
E suap - tecnologie client
PDF
Html5 e PHP
ODP
03 Tapestry5 In Action Introduzione
PDF
Siamo tutti bravi con il browser degli altri!
Introduzione a React Native - Alessandro Giannini
Introduzione a React Native - Mokapp 2017
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
Come sviluppare applicazioni cross device con HTML
J huery
How To React - Gestione Stato Applicativo
Acadevmy - PWA & Angular
Sviluppare SPA con Vue
Angular js o React? Spunti e idee per la scelta di un framework
Sviluppare SPA con Vue.js
Jquery mobile per App
Single Page Applications
follow-ap DAY 4: HTML5 e jQuery
Presentazione tirocinio
Spa with Blazor
JavaScript
E suap - tecnologie client
Html5 e PHP
03 Tapestry5 In Action Introduzione
Siamo tutti bravi con il browser degli altri!
Ad

More from Marco Breveglieri (7)

PDF
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
PPTX
Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...
PPTX
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
PDF
Create a Bot with Delphi and Telegram - ITDevCon 2016
PDF
Web Development with Delphi and React - ITDevCon 2016
PDF
Reportage Delphi Day 2012
PDF
Reportage "RAD Studio XE2 World Tour"
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
Create a Bot with Delphi and Telegram - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Reportage Delphi Day 2012
Reportage "RAD Studio XE2 World Tour"

Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza