49
Wednesday, November 2, 11

Community Code: The SenchaCon App

  • Upload
    sencha

  • View
    2.735

  • Download
    0

Embed Size (px)

DESCRIPTION

Jay Garcia will discuss how Modus Create constructed the SenchaCon mobile application using Sencha Touch 2. Through this presentation, take you through deep dives into the SenchaCon app codebase, as well as discuss many of the decisions they made along the way. Many technical details about Sencha Touch itself will be peppered through this walkthrough.

Citation preview

Page 1: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 2: Community Code: The SenchaCon App

About us

Wednesday, November 2, 11

Page 3: Community Code: The SenchaCon App

The SenchaCon app team

Development Design

Wednesday, November 2, 11

Page 4: Community Code: The SenchaCon App

The SenchaCon app supporters

Web API Sencha Engineers

Wednesday, November 2, 11

Page 5: Community Code: The SenchaCon App

The SenchaCon app

• Uses Sencha Touch 2

• 35 classes

• Takes advantage of Ext Loader (debug)

• Implements MVC (extensively!)

Wednesday, November 2, 11

Page 6: Community Code: The SenchaCon App

The SenchaCon app

• Leverages Local Storage

• Uses app cache (offline storage)

• Implements ComponentQuery

• Not a single component with a static id!

Wednesday, November 2, 11

Page 7: Community Code: The SenchaCon App

The SenchaCon app

Wednesday, November 2, 11

Page 8: Community Code: The SenchaCon App

The SenchaCon app

• Highly optimized custom components

• Reusability kept in mind throughout code base

• Code developed with minification in mind

• Minified with Sencha SDK Tools 2.0

Wednesday, November 2, 11

Page 9: Community Code: The SenchaCon App

Breaking the ice

• Develop individual views & models in their own sandbox

• Views should work independently

• One HTML file per view for testing

• Test fired events via Webkit console

• Allowed for us to divide and conquer

Wednesday, November 2, 11

Page 10: Community Code: The SenchaCon App

Pass #1

• Initial development done in Sencha touch 1.0

• Used MVC

• Router

• History

• Best practices for extending components

• Paved the way for the Sencha Touch 2.0 migration

Wednesday, November 2, 11

Page 11: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 12: Community Code: The SenchaCon App

Enter Sencha Touch 2!

Wednesday, November 2, 11

Page 13: Community Code: The SenchaCon App

Migrate to the new class system

Wednesday, November 2, 11

Page 14: Community Code: The SenchaCon App

Sencha Touch 2.0 migration

• Change the namespace to match the new MVC pattern

• Views

• Models

• Controllers

• Utilities

Wednesday, November 2, 11

Page 15: Community Code: The SenchaCon App

Quick MVC thoughts

• Controller is at the center

• Controller subscribes to events from the view

• Controller updates the model

• Model drives the view

Model

Controller

View

Wednesday, November 2, 11

Page 16: Community Code: The SenchaCon App

Quick MVC thoughts

• Application extends Controller!

• Controllers can talk to the application via events or direct methods calls

ModelView

Controller

AppController

Wednesday, November 2, 11

Page 17: Community Code: The SenchaCon App

Multi-controller application

ModelView ModelView

Controller Controller

AppController

Wednesday, November 2, 11

Page 18: Community Code: The SenchaCon App

The class architecture

SchedulePanelViewport

Viewport

SessionsList

SessionsList

NavBar

NavBar SchedulePanel

App

SessionDetail

SessionDetail

SessionSpeakers

List

SpeakersList

SpeakerSpeakerDetail

SpeakerDetail

DataManager Util

Wednesday, November 2, 11

Page 19: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 20: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 21: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 22: Community Code: The SenchaCon App

Building the Viewport

Viewport

App

History store

Viewport

Wednesday, November 2, 11

Page 23: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 24: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 25: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 26: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 27: Community Code: The SenchaCon App

Building navigation

Viewport NavBar

App

NavBar

History store

Viewport

Wednesday, November 2, 11

Page 28: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 29: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 30: Community Code: The SenchaCon App

Adding the schedule panel

SchedulePanelViewport NavBar

NavBar SchedulePanel

App

History store

Viewport

Wednesday, November 2, 11

Page 31: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 32: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 33: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 34: Community Code: The SenchaCon App

Adding the sessions list

SchedulePanelViewport

Viewport

SessionSessionsList

SessionsList

NavBar

NavBar SchedulePanel

App

Wednesday, November 2, 11

Page 35: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 36: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 37: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 38: Community Code: The SenchaCon App

Adding the schedule panel

SchedulePanelViewport

Viewport

SessionsList

SessionsList

NavBar

NavBar SchedulePanel

App

SessionDetail

SessionDetail

Session

Wednesday, November 2, 11

Page 39: Community Code: The SenchaCon App

A highly optimized view!

Wednesday, November 2, 11

Page 40: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 41: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 42: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 43: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 44: Community Code: The SenchaCon App

Adding session speaker details

SchedulePanelViewport

Viewport

SessionsList

SessionsList

NavBar

NavBar SchedulePanel

App

SessionDetailSession

SpeakerDetail

SpeakerDetail

SessionDetail

Speaker

Wednesday, November 2, 11

Page 45: Community Code: The SenchaCon App

Adding session speaker details

Wednesday, November 2, 11

Page 46: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 47: Community Code: The SenchaCon App

Wednesday, November 2, 11

Page 48: Community Code: The SenchaCon App

Adding session speaker details

SchedulePanelViewport

Viewport

SessionsList

SessionsList

NavBar

NavBar SchedulePanel

App

SessionDetail

SessionDetail

SessionSpeakers

List

SpeakersList

SpeakerSpeakerDetail

SpeakerDetail

Wednesday, November 2, 11

Page 49: Community Code: The SenchaCon App

Questions?

• Contact info:

• twitter :

• @moduscreate

• @_jdg

[email protected]

Thank you!

Wednesday, November 2, 11