SlideShare a Scribd company logo
1 of 82
Download to read offline
Panoramica  e  Orientamento  sul  codice	
Sencha Touch
Speaker:  Giuseppe  Toto
Cos’è  Sencha  Touch	
•  E’ un framework javascript per lo sviluppo multipiattaforma di
applicazioni mobile ad alte prestazioni.
•  E’ possibile utilizzare Sencha Touch per produrre un’esperienza
nativa all’interno di un browser o di un imbrido.
•  Sencha Touch supporta dispositivi
o  Android, iOS
o  Windows Phone
o  Microsoft Surface Pro e Rt
o  BlackBerry
•  Licenza commerciale (free) e Licenza Open Source (free)
ST  basato  su  Webkit  
engine	
•  Sencha Touch è progettato per funzionare solo su browser
webkit. Questo implica che la scelta per gli ambienti di testing
desktop è limitato a 2 browser: Safari e Google Chrome
(entrambi sono basati su webkit engine).
Panoramica  su  Sencha  
Touch
E’  un  framework  	
o Pattern architetturale:
• Model View Controller
o Basato su javascript
o Paradigma di programmazione
orientato ad oggetti
Widget  	
•  Comprende una serie di
widget da poter utilizzare e
personalizzare nei propri
progetti
•  Esempi:
o  http://docs.sencha.com/touch/
2.3.0/#!/example/kitchen-sink
 Manipolare  i  dati	
o E’ possibile immagazzinare i dati
all’interno degli “Store”. I store possono
sincronizzarsi tramite un webservice
(api restful) oppure possono sfruttare il
localstorage del browser.
o Gli store possono essere interrogati,
filtrati, ordinati, etc.
o Validazione dei campi delle form
automatizzato
 Temi  nativi  &  Css
 Temi  nativi  &  Css
Building  automatizzato  
(sencha  cmd)	
•  Ottimizzato per app native
o Supporto framework Cordova
o Comprime i file javascript e file css
•  Dispositivi supportati
o Apple
o Window Phone
o Blackberry
o Android
Documentazione  accurata	
hJp://docs-­‐‑origin.sencha.com/touch/2.3.1/  
Build for Mobile and Desktop
hJp://www.sencha.com/products/architect/  	
Un  suo  Ide  di  sviluppo
Si  integra  anche  con  altri  ide:    
(è  pur  sempre  un  framework  javascript  
open  source)	
o Webstorm
•  http://www.jetbrains.com/webstorm
•  Permette di
sviluppare
applicazioni desktop
•  Simile in certi versi a
Sencha Touch
•  Stesso ambiente di
sviluppo (sencha
architect)
Due  piccioni  con  una  
fava:  Sencha  Ext  Js
Sencha  Market
Esperienze  con  
Sencha  Touch
Configuriamo  Sencha  
Touch
Download  Sencha  
Touch	
Clicca  qui  per  la  
versione  
commerciale	
Clicca  qui  per  
la  versione  
open  source
Di  cosa  abbiamo  
bisogno?	
1.  Ripple Emulator
•  E’ un plugin per il browser Chrome che ci permette di
visualizzare la nostra “pagina web” all’interno di una
cover mobile. Le dimensioni della cover possono
essere regolate.
Di  cosa  abbiamo  
bisogno?	
2.  Sencha Cmd
•  E’ uno strumento a linea di comando che permette
di gestire il ciclo di vita per compilare i vostri progetti
in sencha:
•  Inizializza, comprime e distribuisce il vostro
progetto
Di  cosa  abbiamo  
bisogno?	
3.  Web server
•  Sencha Cmd
Con la linea di comando “sencha web start” (stop
per fermarlo)è possibile avviare un web server in
pochi istanti sulla directory corrente all’indirizzo
http://localhost:1841/
•  XAMPP
Un webserver apache che supporta php e mysql
4.  Java Runtime Environment
•  Version 1.7 JRE is required for Sencha Cmd features
and for Cordova and PhoneGap access.
Di  cosa  abbiamo  
bisogno?	
5.  Ruby version 1.9.3 –
•  Utilizzato per comprimere i file CSS/SASS. (Ruby
version 2.0 doesn't work correctly with Sencha Cmd.)
•  Windows: Download Ruby 1.9.3.n from
rubyinstaller.org. Download the RubyInstaller .exe
file and run it.
•  Mac: Ruby is pre-installed. You can test which
version you have with the ruby -v command. If
you have version 2.0, download the Ruby version
manager (rvm) and use this command to
download and install Ruby: rvm install 1.9.3 --with-
gcc=clang Set your PATH variable to point to the
Ruby 1.9.3 install directory.
•  Ubuntu: Use sudo apt-get install ruby1.9.3 to
download and install Ruby 1.9.3.
Hello  world	
Quando  il  documento  html  è  stato  
caricato,  il  browser  è  pronto  a  lanciare  le  
istruzioni  all’interno  della  funzione  
launch
ORIENTIAMOCI  
Modelliamo  il  conceJo  di  
“Carrello  Virtuale”	
Proprietà:	
•  prodoJi	
•  totale	
Metodi:	
•  addProdoJo(…)	
•  stampaScontrino()
Definire  e  istanziare  una  
classe  in  	
Sencha  Touch
•  Ext.define(…)	
Per  definire  una  classe:	
Per  istanziare  un  oggeJo  di  una  classe:	
•  Ext.create(…)
Definiamo  la  classe  “Carrello”	
Apriamo  un  nuovo  file  e  salviamolo  in  /class/
market/Carrello.js
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
N.B:	
•  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e  
permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array.	
•  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework  
definisce  automaticamente  le  funzioni  set  e  get
Istanziare  la  classe
Istanziare  la  classe	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  
l’oggeJo  aJraverso  il  metodo  Ext.Create(…)	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  class/market/
Carrello.js  all’interno  della  cartella  del  nostro  progeJo.
ESEMPIO  COMPLETO:	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:
ESEMPIO  COMPLETO:	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:	
Istanzio  la  
classe
ESEMPIO  COMPLETO:	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:	
Aggiungo  i  
prodoJi	
{
ESEMPIO  COMPLETO:	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:	
Recupero  il  
totale	
{
ESEMPIO  COMPLETO:	
•  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js	
	
•  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:	
Verifico  la  
lista  dei  
prodoJi  
ordinati	
 {
 MODELLIAMO  
ULTERIORMENTE  IL  
CARRELLO  VIRTUALE	
Creiamo  la  classe  ProdoJo  
Classe  ProdoJo	
ProdoJo	
•  id	
•  nome	
•  prezzo	
•  categoria
Classe  ProdoJo	
salviamo    il  file  in  class/market/ProdoJo.js
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello	
{
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello	
{
Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
..continua
..continua
..continua
..continua	
{
HELLO WORD 2
Hello  world  più  avanzato
Hello  world  più  avanzato	
Container	
 •  Html	
xtype:  “container”
Hello  world  più  avanzato	
Container	
TitleBar	
•  html	
•  docked:”top”	
•  title:”Hello  
World”	
xtype:”titlebar”	
xtype:  “container”
Hello  world  più  avanzato	
Container	
TitleBar	
•  html	
•  docked:”top”	
•  title:”Hello  
World”	
xtype:”titlebar”	
xtype:  “container”	
Bu@on	
•  text:”change  
color”	
•  align:”right”	
listeners:  {	
tap:function(){  	
//istruzioni  per  cambiare  sfondo  colore  	
}	
}
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:
soluzione:	
{
soluzione:	
{
GESTIRE  GLI  EVENTI
listeners	
•  Per  caJurare  un  evento  bisogna  meJersi  in“ascolto”  (listern).	
•  Sui  componenti  su  cui  vogliamo  caJurare  determinati  eventi  
specifichiamo  un  listeners  (gestore  di  eventi)  in  cui  
definiamo  principalmente  uno  o  più  eventi  da  caJurare:	
•  il  tipo  di  evento  da  ca@urare  (es.  tap)  	
•  la  funzione  da  eseguire  quando  questo  evento  viene  
caJurato.	
	
•  Sulla  documentazione  è  possibile  consultare  l’elenco  
completo  degli  eventi  che  possono  essere  ascoltati  su  un  
determinato  componente.	
•  Ad  esempio  sul  componente  “buJon”  è  possibile  
caJurare  l’evento  “tap”
Lista  eventi  sul  componente  BuJon	
hJp://docs.sencha.com/touch/2.3.0/#!/api/Ext.BuJon  

More Related Content

Viewers also liked

Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional ProgrammingFrancesco Bruni
 
Customer centric agile @ ACE! conference
Customer centric agile @ ACE! conferenceCustomer centric agile @ ACE! conference
Customer centric agile @ ACE! conferenceAngel Diaz-Maroto
 
Alberto di Cagno_L'opensource nella cultura giuridica italiana
Alberto di Cagno_L'opensource nella cultura giuridica italianaAlberto di Cagno_L'opensource nella cultura giuridica italiana
Alberto di Cagno_L'opensource nella cultura giuridica italianaLa Scuola Open Source
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and consFabio Fumarola
 
Viaggio attraverso il Cloud - Cos'è AWS?
Viaggio attraverso il Cloud - Cos'è AWS?Viaggio attraverso il Cloud - Cos'è AWS?
Viaggio attraverso il Cloud - Cos'è AWS?Amazon Web Services
 

Viewers also liked (6)

Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional Programming
 
Customer centric agile @ ACE! conference
Customer centric agile @ ACE! conferenceCustomer centric agile @ ACE! conference
Customer centric agile @ ACE! conference
 
Alberto di Cagno_L'opensource nella cultura giuridica italiana
Alberto di Cagno_L'opensource nella cultura giuridica italianaAlberto di Cagno_L'opensource nella cultura giuridica italiana
Alberto di Cagno_L'opensource nella cultura giuridica italiana
 
NoSQL databases pros and cons
NoSQL databases pros and consNoSQL databases pros and cons
NoSQL databases pros and cons
 
Viaggio attraverso il Cloud - Cos'è AWS?
Viaggio attraverso il Cloud - Cos'è AWS?Viaggio attraverso il Cloud - Cos'è AWS?
Viaggio attraverso il Cloud - Cos'è AWS?
 
SlideShare 101
SlideShare 101SlideShare 101
SlideShare 101
 

Similar to Sencha touch: panoramica e orientamento sul codice

DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioningNicolò Carandini
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScriptRoberto Messora
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 

Similar to Sencha touch: panoramica e orientamento sul codice (20)

Corso Javascript
Corso JavascriptCorso Javascript
Corso Javascript
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
8 - Web app e CMS - 17/18
8 - Web app e CMS - 17/188 - Web app e CMS - 17/18
8 - Web app e CMS - 17/18
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 

Sencha touch: panoramica e orientamento sul codice

  • 1. Panoramica  e  Orientamento  sul  codice Sencha Touch Speaker:  Giuseppe  Toto
  • 2. Cos’è  Sencha  Touch •  E’ un framework javascript per lo sviluppo multipiattaforma di applicazioni mobile ad alte prestazioni. •  E’ possibile utilizzare Sencha Touch per produrre un’esperienza nativa all’interno di un browser o di un imbrido. •  Sencha Touch supporta dispositivi o  Android, iOS o  Windows Phone o  Microsoft Surface Pro e Rt o  BlackBerry •  Licenza commerciale (free) e Licenza Open Source (free)
  • 3. ST  basato  su  Webkit   engine •  Sencha Touch è progettato per funzionare solo su browser webkit. Questo implica che la scelta per gli ambienti di testing desktop è limitato a 2 browser: Safari e Google Chrome (entrambi sono basati su webkit engine).
  • 5. E’  un  framework   o Pattern architetturale: • Model View Controller o Basato su javascript o Paradigma di programmazione orientato ad oggetti
  • 6. Widget   •  Comprende una serie di widget da poter utilizzare e personalizzare nei propri progetti •  Esempi: o  http://docs.sencha.com/touch/ 2.3.0/#!/example/kitchen-sink
  • 7.  Manipolare  i  dati o E’ possibile immagazzinare i dati all’interno degli “Store”. I store possono sincronizzarsi tramite un webservice (api restful) oppure possono sfruttare il localstorage del browser. o Gli store possono essere interrogati, filtrati, ordinati, etc. o Validazione dei campi delle form automatizzato
  • 10. Building  automatizzato   (sencha  cmd) •  Ottimizzato per app native o Supporto framework Cordova o Comprime i file javascript e file css •  Dispositivi supportati o Apple o Window Phone o Blackberry o Android
  • 12. Build for Mobile and Desktop hJp://www.sencha.com/products/architect/   Un  suo  Ide  di  sviluppo
  • 13. Si  integra  anche  con  altri  ide:     (è  pur  sempre  un  framework  javascript   open  source) o Webstorm •  http://www.jetbrains.com/webstorm
  • 14. •  Permette di sviluppare applicazioni desktop •  Simile in certi versi a Sencha Touch •  Stesso ambiente di sviluppo (sencha architect) Due  piccioni  con  una   fava:  Sencha  Ext  Js
  • 18. Download  Sencha   Touch Clicca  qui  per  la   versione   commerciale Clicca  qui  per   la  versione   open  source
  • 19. Di  cosa  abbiamo   bisogno? 1.  Ripple Emulator •  E’ un plugin per il browser Chrome che ci permette di visualizzare la nostra “pagina web” all’interno di una cover mobile. Le dimensioni della cover possono essere regolate.
  • 20. Di  cosa  abbiamo   bisogno? 2.  Sencha Cmd •  E’ uno strumento a linea di comando che permette di gestire il ciclo di vita per compilare i vostri progetti in sencha: •  Inizializza, comprime e distribuisce il vostro progetto
  • 21. Di  cosa  abbiamo   bisogno? 3.  Web server •  Sencha Cmd Con la linea di comando “sencha web start” (stop per fermarlo)è possibile avviare un web server in pochi istanti sulla directory corrente all’indirizzo http://localhost:1841/ •  XAMPP Un webserver apache che supporta php e mysql 4.  Java Runtime Environment •  Version 1.7 JRE is required for Sencha Cmd features and for Cordova and PhoneGap access.
  • 22. Di  cosa  abbiamo   bisogno? 5.  Ruby version 1.9.3 – •  Utilizzato per comprimere i file CSS/SASS. (Ruby version 2.0 doesn't work correctly with Sencha Cmd.) •  Windows: Download Ruby 1.9.3.n from rubyinstaller.org. Download the RubyInstaller .exe file and run it. •  Mac: Ruby is pre-installed. You can test which version you have with the ruby -v command. If you have version 2.0, download the Ruby version manager (rvm) and use this command to download and install Ruby: rvm install 1.9.3 --with- gcc=clang Set your PATH variable to point to the Ruby 1.9.3 install directory. •  Ubuntu: Use sudo apt-get install ruby1.9.3 to download and install Ruby 1.9.3.
  • 23. Hello  world Quando  il  documento  html  è  stato   caricato,  il  browser  è  pronto  a  lanciare  le   istruzioni  all’interno  della  funzione   launch
  • 25. Modelliamo  il  conceJo  di   “Carrello  Virtuale” Proprietà: •  prodoJi •  totale Metodi: •  addProdoJo(…) •  stampaScontrino()
  • 26. Definire  e  istanziare  una   classe  in   Sencha  Touch
  • 27. •  Ext.define(…) Per  definire  una  classe: Per  istanziare  un  oggeJo  di  una  classe: •  Ext.create(…)
  • 28. Definiamo  la  classe  “Carrello” Apriamo  un  nuovo  file  e  salviamolo  in  /class/ market/Carrello.js
  • 29. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 30. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 31. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 32. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 33. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 34. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 35. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 36. N.B: •  prodoJi.push  è  un  metodo  della  classe  Array  di  javascript  e   permeJe  di  accodare  un  elemento  all’interno  dello  stesso  array. •  Ricorda:  per  ogni  variabile  definita  nel  config  il  framework   definisce  automaticamente  le  funzioni  set  e  get
  • 38. Istanziare  la  classe •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare   l’oggeJo  aJraverso  il  metodo  Ext.Create(…) •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  class/market/ Carrello.js  all’interno  della  cartella  del  nostro  progeJo.
  • 39. ESEMPIO  COMPLETO: •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello:
  • 40. ESEMPIO  COMPLETO: •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello: Istanzio  la   classe
  • 41. ESEMPIO  COMPLETO: •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello: Aggiungo  i   prodoJi {
  • 42. ESEMPIO  COMPLETO: •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello: Recupero  il   totale {
  • 43. ESEMPIO  COMPLETO: •  Ricordiamoci  di  salvare  la  classe  nel  file  di  percorso  /class/market/Carrello.js •  Per  utilizzare  la  classe  Carrello  dobbiamo  istanziare  un  oggeJo  di  tipo  Carrello: Verifico  la   lista  dei   prodoJi   ordinati {
  • 44.  MODELLIAMO   ULTERIORMENTE  IL   CARRELLO  VIRTUALE Creiamo  la  classe  ProdoJo  
  • 45. Classe  ProdoJo ProdoJo •  id •  nome •  prezzo •  categoria
  • 46. Classe  ProdoJo salviamo    il  file  in  class/market/ProdoJo.js
  • 47. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
  • 48. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
  • 49. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello {
  • 50. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
  • 51. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
  • 52. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello {
  • 53. Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello
  • 59. Hello  world  più  avanzato
  • 60. Hello  world  più  avanzato Container •  Html xtype:  “container”
  • 61. Hello  world  più  avanzato Container TitleBar •  html •  docked:”top” •  title:”Hello   World” xtype:”titlebar” xtype:  “container”
  • 62. Hello  world  più  avanzato Container TitleBar •  html •  docked:”top” •  title:”Hello   World” xtype:”titlebar” xtype:  “container” Bu@on •  text:”change   color” •  align:”right” listeners:  { tap:function(){   //istruzioni  per  cambiare  sfondo  colore   } }
  • 81. listeners •  Per  caJurare  un  evento  bisogna  meJersi  in“ascolto”  (listern). •  Sui  componenti  su  cui  vogliamo  caJurare  determinati  eventi   specifichiamo  un  listeners  (gestore  di  eventi)  in  cui   definiamo  principalmente  uno  o  più  eventi  da  caJurare: •  il  tipo  di  evento  da  ca@urare  (es.  tap)   •  la  funzione  da  eseguire  quando  questo  evento  viene   caJurato. •  Sulla  documentazione  è  possibile  consultare  l’elenco   completo  degli  eventi  che  possono  essere  ascoltati  su  un   determinato  componente. •  Ad  esempio  sul  componente  “buJon”  è  possibile   caJurare  l’evento  “tap”
  • 82. Lista  eventi  sul  componente  BuJon hJp://docs.sencha.com/touch/2.3.0/#!/api/Ext.BuJon