35
Mobilizing Your Visualforce Application Keir Bowden, BrightGen, CTO @bob_buzzard

Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

  • View
    1.056

  • Download
    1

Embed Size (px)

DESCRIPTION

Slide deck from my Dreamforce 2013 breakout session on how to turn your Visualforce application into an HTML5 mobile application using the jQuery Mobile and Knockout.js frameworks.

Citation preview

Page 1: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Mobilizing Your Visualforce Application Mobilizing Your Visualforce Application

Keir Bowden, BrightGen, CTO

@bob_buzzard

Page 2: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

About me CTO of BrightGen

5 years Force.com

Force.com MVP

Enterprise Java background

Page 3: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Styling isn’t mobilizing!

“Mimicking a mobile device UI turns my slick Visualforce pages into slick

HTML5 web applications” – me, circa. Dreamforce 2010

It doesn’t. Here’s why (and how it should be done) ...

Page 4: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Sample application Native

Survey

Multiple answer types

Back/forward navigation

Page 5: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Data model

SurveySurvey

SurveyQuestionSurvey

Question

SurveyResponse

SurveyResponse

SurveyQuestionResponse

SurveyQuestionResponse

ContactContact

Page 6: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Flow

Start SurveyStart Survey Retrieve QuestionRetrieve Question

CheckboxCheckbox

Radio ButtonsRadio Buttons

Text AreaText Area

Update Question Response

Update Question Response Complete SurveyComplete Survey

Page 7: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Demonstration

The desktop version of the application ...

Page 8: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Visualforce markup

Page 9: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

HTML5 Web Application Web pages

Accessed via browser

Basic device features

Transactional

Page 10: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Part 1: jQuery Mobile

JqueryMobileJqueryMobile

Mobile UI framework

Touch optimized

Cross device

Built on jQuery

Page 11: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

HTML5 Custom Attributes

Page 12: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Single Page Application

Page 13: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Mobilizing the wrong way

Replace Visualforce markup with jQuery Mobile markup

Set viewport to device size

Leave controller in place

Page 14: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Competition not co-operation Page navigation

Form submission

Ajax rerendering

Page 15: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

View state Mobile bandwidth

Heavy for device

Server side in pilot

Page 16: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Latency Power saving

Packet loss ≠ congestion

TCP backs off

“Nobody wants to wait while they wait.”

- Mike Kreiger, Co-founder Instagram

Page 17: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Demonstration

The desktop version with jQuery Mobile markup

Page 18: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Visualforce

Page 19: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Rebuild the app for mobile

Mobile experience

Animated transitions

Reactive

Page 20: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Part 2: JavaScript

JqueryMobileJqueryMobile JavaScriptJavaScript

JavaScriptRemotingJavaScriptRemoting

Business logic

Executes client side

Reduced round trips

No API calls

Page 21: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

JavaScript Remoting Controller method

Page 22: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

JavaScript Remoting Invoke via JavaScript

Callback function

Page 23: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Part 3: Knockout

JqueryMobileJqueryMobile

JavaScriptJavaScript JavaScriptRemotingJavaScriptRemoting

Reduce DOM manipulation

Declarative binding

Automatic refresh

JavaScript “controller”

Fast!

KnockoutKnockout

Page 24: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Knockout View Model

Page 25: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Declarative binding

Page 26: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Advanced binding

Question 1

•Type=‘Text Area’

•Response=‘Great’

Question 2

•Type=‘Text Area’

•Response=‘Okay’

Question 3

•Type=‘Checkbox’

•Response=‘true’

Page 27: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Progressive enhancementjQuery Mobile enhances markup

HTML -> CSS -> JavaScript

Only runs once

Knockout updates the DOM

Page 28: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Demonstration

The survey application rebuilt for mobile.

Page 29: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Lesson 1: Storyboard the application

Especially single page applications!

Map pages to functionality

Identify swipe transitions

Page 30: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Lesson 2: Client side business logic

On device - faster

Eases transition to hybrid

Don’t mix with server side!

Page 31: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Lesson 3: Professional JavaScript

Avoid anonymous functions

Use your own namespace

Don’t tie behaviour to content

Page 32: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Lesson 4: Combining frameworks

Rarely as simple as combining resources

You are the conductor

Persevere!

Page 33: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Competition Quiz on this session

QR code/link in chatter feed

Closes 8pm

Win my book

Page 34: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js

Keir BowdenKeir Bowden

CTO, BrightGen@bob_buzzard

Page 35: Mobilizing your Visualforce Application with jQuery Mobile and Knockout.js