Sencha touch: panoramica e orientamento sul codice

82
Panoramica e Orientamento sul codice Sencha Touch Speaker: Giuseppe Toto

description

Talk: Sencha Touch Articolo di riferimento: www.giuseppetoto.it/mobile/sencha-touch-2-build-mobile-web-apps-html5

Transcript of Sencha touch: panoramica e orientamento sul codice

Page 1: Sencha touch: panoramica e orientamento sul codice

Panoramica  e  Orientamento  sul  codice

Sencha Touch Speaker:  Giuseppe  Toto

Page 2: Sencha touch: panoramica e orientamento sul codice

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)

Page 3: Sencha touch: panoramica e orientamento sul codice

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).

Page 4: Sencha touch: panoramica e orientamento sul codice

Panoramica  su  Sencha  Touch

Page 5: Sencha touch: panoramica e orientamento sul codice

E’  un  framework   o Pattern architetturale: • Model View Controller

o Basato su javascript

o Paradigma di programmazione orientato ad oggetti

Page 6: Sencha touch: panoramica e orientamento sul codice

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

Page 7: Sencha touch: panoramica e orientamento sul codice

 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

Page 8: Sencha touch: panoramica e orientamento sul codice

 Temi  nativi  &  Css

Page 9: Sencha touch: panoramica e orientamento sul codice

 Temi  nativi  &  Css

Page 10: Sencha touch: panoramica e orientamento sul codice

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

Page 11: Sencha touch: panoramica e orientamento sul codice

Documentazione  accurata hJp://docs-­‐‑origin.sencha.com/touch/2.3.1/  

Page 12: Sencha touch: panoramica e orientamento sul codice

Build for Mobile and Desktop

hJp://www.sencha.com/products/architect/  

Un  suo  Ide  di  sviluppo

Page 13: Sencha touch: panoramica e orientamento sul codice

Si  integra  anche  con  altri  ide:    (è  pur  sempre  un  framework  javascript  

open  source)

o Webstorm •  http://www.jetbrains.com/webstorm

Page 14: Sencha touch: panoramica e orientamento sul codice

•  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

Page 15: Sencha touch: panoramica e orientamento sul codice

Sencha  Market

Page 16: Sencha touch: panoramica e orientamento sul codice

Esperienze  con  Sencha  Touch

Page 17: Sencha touch: panoramica e orientamento sul codice

Configuriamo  Sencha  Touch

Page 18: Sencha touch: panoramica e orientamento sul codice

Download  Sencha  Touch

Clicca  qui  per  la  versione  

commerciale

Clicca  qui  per  la  versione  open  source

Page 19: Sencha touch: panoramica e orientamento sul codice

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.

Page 20: Sencha touch: panoramica e orientamento sul codice

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

Page 21: Sencha touch: panoramica e orientamento sul codice

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.

Page 22: Sencha touch: panoramica e orientamento sul codice

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.

Page 23: Sencha touch: panoramica e orientamento sul codice

Hello  world

Quando  il  documento  html  è  stato  caricato,  il  browser  è  pronto  a  lanciare  le  

istruzioni  all’interno  della  funzione  launch

Page 24: Sencha touch: panoramica e orientamento sul codice

ORIENTIAMOCI  

Page 25: Sencha touch: panoramica e orientamento sul codice

Modelliamo  il  conceJo  di  “Carrello  Virtuale”

Proprietà: •  prodoJi •  totale

Metodi: •  addProdoJo(…) •  stampaScontrino()

Page 26: Sencha touch: panoramica e orientamento sul codice

Definire  e  istanziare  una  classe  in  

Sencha  Touch

Page 27: Sencha touch: panoramica e orientamento sul codice

•  Ext.define(…) Per  definire  una  classe:

Per  istanziare  un  oggeJo  di  una  classe:

•  Ext.create(…)

Page 28: Sencha touch: panoramica e orientamento sul codice

Definiamo  la  classe  “Carrello”

Apriamo  un  nuovo  file  e  salviamolo  in  /class/market/Carrello.js

Page 29: Sencha touch: panoramica e orientamento sul codice

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

Page 30: Sencha touch: panoramica e orientamento sul codice

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

Page 31: Sencha touch: panoramica e orientamento sul codice

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

Page 32: Sencha touch: panoramica e orientamento sul codice

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

Page 33: Sencha touch: panoramica e orientamento sul codice

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

Page 34: Sencha touch: panoramica e orientamento sul codice

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

Page 35: Sencha touch: panoramica e orientamento sul codice

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

Page 36: Sencha touch: panoramica e orientamento sul codice

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

Page 37: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe

Page 38: Sencha touch: panoramica e orientamento sul codice

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.

Page 39: Sencha touch: panoramica e orientamento sul codice

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:

Page 40: Sencha touch: panoramica e orientamento sul codice

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

Page 41: Sencha touch: panoramica e orientamento sul codice

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 {

Page 42: Sencha touch: panoramica e orientamento sul codice

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 {

Page 43: Sencha touch: panoramica e orientamento sul codice

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 {

Page 44: Sencha touch: panoramica e orientamento sul codice

 MODELLIAMO  ULTERIORMENTE  IL  CARRELLO  VIRTUALE

Creiamo  la  classe  ProdoJo  

Page 45: Sencha touch: panoramica e orientamento sul codice

Classe  ProdoJo ProdoJo •  id •  nome •  prezzo •  categoria

Page 46: Sencha touch: panoramica e orientamento sul codice

Classe  ProdoJo

salviamo    il  file  in  class/market/ProdoJo.js

Page 47: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

Page 48: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

Page 49: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

{

Page 50: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

Page 51: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

Page 52: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

{

Page 53: Sencha touch: panoramica e orientamento sul codice

Istanziare  la  classe  ProdoJo  e  aggiungerla  al  carrello

Page 54: Sencha touch: panoramica e orientamento sul codice

..continua

Page 55: Sencha touch: panoramica e orientamento sul codice

..continua

Page 56: Sencha touch: panoramica e orientamento sul codice

..continua

Page 57: Sencha touch: panoramica e orientamento sul codice

..continua

{

Page 58: Sencha touch: panoramica e orientamento sul codice

HELLO WORD 2

Page 59: Sencha touch: panoramica e orientamento sul codice

Hello  world  più  avanzato

Page 60: Sencha touch: panoramica e orientamento sul codice

Hello  world  più  avanzato Container •  Html

xtype:  “container”

Page 61: Sencha touch: panoramica e orientamento sul codice

Hello  world  più  avanzato Container

TitleBar

•  html

•  docked:”top”

•  title:”Hello  World”

xtype:”titlebar”

xtype:  “container”

Page 62: Sencha touch: panoramica e orientamento sul codice

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  

} }

Page 63: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 64: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 65: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 66: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 67: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 68: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 69: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 70: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 71: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 72: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 73: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 74: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 75: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 76: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 77: Sencha touch: panoramica e orientamento sul codice

soluzione:

Page 78: Sencha touch: panoramica e orientamento sul codice

soluzione:

{

Page 79: Sencha touch: panoramica e orientamento sul codice

soluzione:

{

Page 80: Sencha touch: panoramica e orientamento sul codice

GESTIRE  GLI  EVENTI

Page 81: Sencha touch: panoramica e orientamento sul codice

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”

Page 82: Sencha touch: panoramica e orientamento sul codice

Lista  eventi  sul  componente  BuJon hJp://docs.sencha.com/touch/2.3.0/#!/api/Ext.BuJon