jquery mobile jump start

Post on 08-May-2015

1.930 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

This 6 hour, hands-on training class introduces you and teaches you intermediate to advanced mobile web development using jQuery Mobile. We get you up and running with this popular JavaScript framework for creating mobile apps and mobile optimized web sites! In this six hour class, you will learn how to develop client side user interfaces for smart phones and tablets.

TRANSCRIPT

jQuery Mobile Jump Start

Troy Miles aka @therockncoder

Saturday, June 15, 13

Want more? Follow me for more tutorials and source code.@therockncoder

Saturday, June 15, 13

Check out my videos:www.youtube.com/rockncoder

Saturday, June 15, 13

Source code for my tutorials hosted on GitHub @

https://github.com/Rockncoder

Saturday, June 15, 13

Before We Begin

• This class will move fast

• Don’t worry if you don’t complete an exercise

• The exercises and solutions are available for download

• All slides are available for download

Saturday, June 15, 13

What Are Going To Do?

We are going to learn about jQuery Mobile by examining a working application. We aren’t going to decompose each line of code, instead we will examine each major area of

functionality.

Saturday, June 15, 13

Coffee+Coffee

• Listview

• Location/Maps

• Ajax

• Templates

Saturday, June 15, 13

Today’s Agenda

• 0830-0900 Setup

• 0900-0930 HTML Overview

• 0930-1000 JavaScript Overview

• 1015-1030 Morning Break

• 1000-1030 Ajax pt. 1

• 1045-1115 Ajax pt. 2

Saturday, June 15, 13

Today’s Agenda

• 1115-1145 Listviews

• 1145-1215 Templates

• 1215-1245 Lunch

• 1245-1345 Location & Maps

• 1400-1445 Responsive Design

• 1445-1515 Media & Charts

Saturday, June 15, 13

“You have to learn to fake the funk before you can begin to make the funk.”

Saturday, June 15, 13

HTML5 Overview

• Fast Facts

• Best Practices

• Exercise - Creating a semantic SPA

• Summary

Saturday, June 15, 13

Fast Facts

• HTML5 not official but in wide use

• Well supported by smart phones: iPhone, Android, Blackberry, and WP8

• W3C analyzed millions of web pages to decide on new semantic tags

• SPA - single page application

Saturday, June 15, 13

Best Practices

• Use semantic tags for clarity

• Place multiple pages together for speed

• Use page transitions for a better UX

Saturday, June 15, 13

Exercise #1Semantic SPA

• Start with the exercise folder

• Add a second JQM page

• Use transitions to smooth page change

Saturday, June 15, 13

Summary

• The new semantic tags in HTML5 increase clarity

• jQuery Mobile includes attributes to improve app look and feel

Saturday, June 15, 13

“Java is to JavaScript as Car is to Carpet.”

Saturday, June 15, 13

JavaScript Overview

• Fast Facts

• The Power Trio

• Events

• Best Practices

• Exercise - Create page code

• Summary

Saturday, June 15, 13

Fast Facts

• Created by Brendan Eich of Netscape

• Originally named LiveScript, but renamed for marketing purposes

• Based on Self and Scheme languages, but not C

Saturday, June 15, 13

The Power Trio

• Objects

• Functions

• Closures

Saturday, June 15, 13

Objects

• Are associative arrays or dictionaries consisting of key/value pairs

• The key can be ANY string

• Can be modified at run-time

• No difference between dot and bracket notations

Saturday, June 15, 13

Functions

• Are first-class entities

• They are objects themselves and can have properties and methods

• The provide the primary method of information hiding

• Can be nested and passed as parameters

Saturday, June 15, 13

Closures

• A very tough concept to grasp

• A closure is a special kind of object that combines two things: a function, and the environment in which that function was created.

Saturday, June 15, 13

Events

• A loosely couple way of component communication

• Receive or handle events

• Transmit or trigger events

• In jQuery .on() and .off() are preferred

Saturday, June 15, 13

Best Practices

• Minimize the use of global memory

• Wrap code in functions to protect it

• Load JS files last for speed*

• Use events to avoid tight coupling

Saturday, June 15, 13

Exercise #2Create Page Code

• Start from the exercise #2 code

• Create code to hook events for both page 1 and 2

Saturday, June 15, 13

Summary

• JavaScript in the browser is a very dirty environment

• Apps must be pro-active in order to function well

• Always write your code in a structured way

Saturday, June 15, 13

Why not jQuery 2.0?

• jQuery 2.0 is available and is smaller and faster since it no longer supports IE versions 6, 7, and 8. Yet we use version 1.91 in the app, why? The jQuery Mobile team has not yet upgraded JQM to support it.

Saturday, June 15, 13

Ajax pt. 1

• Fast Facts

• jQuery ajax()

• Promise

• Data Formats

• Exercise - Getting data from the server

• Summary

Saturday, June 15, 13

Fast Facts

• The web designed to load complete HTML pages

• Microsoft created XMLHTTP object in 1998

• Mozilla based their XMLHttpRequest object on it in 2000

• The XMLHttpRequest object became a defacto standard

Saturday, June 15, 13

.ajax()

• Before the introduction of Prototype & jQuery in 2006 communication with the server was browser specific

• Performs an async HTTP request

• .ajax(url, [settings])

Saturday, June 15, 13

.promise()

• Returns a Promise object that is resolved once all actions complete

• Considered easier to ready than callbacks

Saturday, June 15, 13

Data Formats

• There two standard data formats:

• JSON - JavaScript Object Notation

• XML - eXtensible Markup Language

• JSON is the lighter of the two

Saturday, June 15, 13

JSON

• Created by Douglas Crockford in 2001

• JSON.stringify to serialize

• JSON.parse to deserialize

• Officially only double quotes supported

Saturday, June 15, 13

Best Practices

• Always be prepared for failure

• Prefer chunky over chatty

• Prefer JSON over XML

• Use double quotes in JSON

Saturday, June 15, 13

Exercise #3Getting Data

• Starting from exercise #3

• Make a call to YP API

• Use an alert or console.log to display results

Saturday, June 15, 13

Summary

• Its ability to do cross-browser Ajax is one of jQuery’s most popular features

• Ajax data to/from RESTful web services is very popular

Saturday, June 15, 13

Ajax pt. 2

• HTTP Traffic Watching

• Chrome & Fiddler

• Exercise - Paging, Getting more data

• Summary

Saturday, June 15, 13

HTTP Traffic Watching

• Issues with Ajax often cause bugs

• Their async nature makes can make fixing these bugs challenging

• There are tools to help

Saturday, June 15, 13

Chrome & Fiddler

• Chrome includes tools to watch network traffic (lightweight)

• Fiddler a free tool from Telerik is also available (super)

• Fiddler is only available for the PC

Saturday, June 15, 13

Exercise #4Getting more data

• Starting from exercise #4

• Make more calls to the YP API which request more data

• Again use alert or console.log to display results

Saturday, June 15, 13

Summary

• Debugging Ajax issues can be tough but there are tools to help

• Often the amount of data available exceeds that which can be easily handled

Saturday, June 15, 13

Listviews

• Fast Facts

• Best Practices

• Vertical Scrolling

• Exercise - Creating list from data

• Summary

Saturday, June 15, 13

Fast Facts

• Listviews are coded as either HTML unordered (ul) or ordered (ol) lists

• Can be used as menus, settings or simply display a list of items

Saturday, June 15, 13

Vertical Scrolling

• JQM supports vertical scrolling as does any other web site

• Can also fix the position of the header and footer

Saturday, June 15, 13

Exercise #5Creating a Listview

• Start with exercise #5

• Finish the listview generation code

• Remember to call the refresh method

Saturday, June 15, 13

Summary

• JQM out of the box supports vertical scrolling

• The end result is less than app-like however

Saturday, June 15, 13

iScroll

• Fast Facts

• Best Practices

• Exercise - Implement pull to refresh

• Summary

Saturday, June 15, 13

Fast Facts

• iScroll4 created by Matteo Spinelli

• Source code is MIT Licensed

• Works by using CSS3 transformation

• Number of scroll regions only limited by memory

Saturday, June 15, 13

Best Practices

• Release no longer needed iScrolls with the destroy() method

Saturday, June 15, 13

Exercise #6Smooth Scrolling

• Start with exercise #6

• Finished the smooth scrolling method

• If you have trouble, look at the working “cc” app

Saturday, June 15, 13

Summary

• Smooth scrolling improves both UI and UX

• It is relatively easy to replace traditional HTML scrolling

Saturday, June 15, 13

Templates

• Fast Facts

• Handlebars

• Best Practices

• Exercise - Rewrite the code to use templates

• Summary

Saturday, June 15, 13

Fast Facts

• Mixing HTML with JavaScript violates separation of concerns

• Templating engines allow for the inclusion of HTML which can be modified easily

• HTML by definition does not operate on unknown tags

Saturday, June 15, 13

Handlebars.js

• There are many of templating engines

• Handlebars.js works on both the client and the server

• The project is maintain by the same team as Ember.js

Saturday, June 15, 13

Best Practices

• HTML is content

• CSS is presentation

• JavaScript is behavior

• Separation of Concerns (SOC) states not to mix any of the three

Saturday, June 15, 13

Exercise #7Using Templates

• Start from exercise #7

• Replace the use of JS strings with a template

Saturday, June 15, 13

Summary

• Using templates keeps us from violating separation of concerns

• The handlebars templates are easy for both engineers and designers to work with

Saturday, June 15, 13

Geolocation

• Fast Facts

• The Geolocation Object

• Best Practices

• Exercise - Get location

• Summary

Saturday, June 15, 13

Fast Facts

• Not actually part of HTML5

• User must grant web site access to the geolocation data

• Can be a significant drain on batteries

• Can take a significant amount of time before location async return

Saturday, June 15, 13

The Geolocation Object

• Part of the navigator object, which has no official standard

• Three methods: getCurrentPosition(), watchPosition(), clearWatch()

Saturday, June 15, 13

Best Practices

• People have just concerns about location privacy

• Provide an alternative if possible

• Gracefully fail it not able to continue

• Remember to clear unneeded watchPositions

Saturday, June 15, 13

Exercise #8Getting Location

• Starting with exercise 8

• Use a console.log to display the current latitude and longitude

Saturday, June 15, 13

Summary

• Geolocation is support by most current browsers, mobile and desktop

• Power used Geolocation can drain power and tax CPU

Saturday, June 15, 13

Maps

• Maps (Google Maps)

• Exercise - Display our current location

• Annotating Maps

• Exercise - Displaying cafe location

• Summary

Saturday, June 15, 13

Google Maps

• There are many publicly available map providers

• Google was chosen because of its accuracy, simplicity, and cost (free)

• To use simply include a file, specify a div, and call the draw map code

Saturday, June 15, 13

Exercise #9Displaying a Map

• Start with exercise #9

• The Maps include file is present

• The map div is displayed on the page

• Write the code to make the map appear

Saturday, June 15, 13

Map Annotation

• Markers identify locations on the map

• You can use Google’s markers or your own

• Markers can have click events

Saturday, June 15, 13

Exercise #10Annotating a Map

• Start with exercise #10

• Place a maker on the map at:

• latitude = 33.8226203918457

• longitude= -118.331848144531

Saturday, June 15, 13

Summary

• Most users expect to see a map wherever location information is displayed

• Google Maps is the most popular map provider (75% of web sites)

Saturday, June 15, 13

Responsive Design

• Fast Facts

• Phone vs Tablet

• Grids, Divs, and Tables

• Exercise - Make display responsive

• Summary

Saturday, June 15, 13

Fast Facts

• Responsive design means supporting multiple device resolutions from a single application

• JQM added the Grid object to support responsive design

• JQM 1.3.0 added tables

Saturday, June 15, 13

Best Practices

• Be careful of one size fits all solutions

• The needs of your mobile user maybe different than those on desktop

• Always keep bandwidth restrictions in mind

Saturday, June 15, 13

Exercise #11Making a Responsive Design

• Start with exercise #11

• Modify the code to show the map next to the listview when there is sufficient width

Saturday, June 15, 13

Summary

• Responsive Design is difficult

• A solution for one web site will not necessarily work for another

Saturday, June 15, 13

Media

• Fast Facts

• Taking a picture (yes, from a mobile browser)

• Exercise - Upload a picture to a server

• Summary

Saturday, June 15, 13

Fast Facts

• Modern smart phones treat the input type=”file” as the camera

• Can take picture or video or choose from photo album

• The real work is done on the server

Saturday, June 15, 13

Taking and Uploading a Picture

• Must turn off JQM’s Ajax with data-ajax=”false”

• Use a input type=file with form post with enctype=”multipart/form-data”

Saturday, June 15, 13

Exercise #12Uploading a Picture

• Start with exercise #12

• Complete form tag for upload

• You will not actually be able to submit the photo since that requires a server

Saturday, June 15, 13

Summary

• Many mobile browser support photo upload, but not all

• Can upload photo and video but keep in mind how much memory is required

• Can also choose from photos in the user’s album

Saturday, June 15, 13

Charts

• Fast Facts

• jqPlots

• Exercise - Create a chart from hours of operation

• Summary

Saturday, June 15, 13

Fast Facts

• Humans understand visual faster than written

• Charts are a standard way to render numeric data

• There are lots of charting solutions for the web

Saturday, June 15, 13

jqPlot

• An open source project by Chris Leonello

• A jQuery widget

• Supports its own plug-in

• Rendered completely on the client

Saturday, June 15, 13

Best Practices

• Charts are computationally expensive to render

• It is possible to render charts dynamically, but not recommended

Saturday, June 15, 13

Exercise #13Charting Data

• Start from exercise #13

• Implement bar chart to display hours of operation of coffee shops

Saturday, June 15, 13

Summary

• jqPlot is free and easy use charting solution

Saturday, June 15, 13

Links

• jquerymobile.com

• jquery.com

• cubiq.org/iscroll-4

• jqplot.com

• http://handlebarsjs.com/

• callbackhell.com

• garann.github.io/template-chooser/

Saturday, June 15, 13

My Links

• @therockncoder

• https://github.com/Rockncoder

• http://youtube.com/rockncoder

• http://slideshare.net/rockncoder

Saturday, June 15, 13

Course Summary

• When in doubt follow best practices

• Build a Coffee+Coffee app of your own

• Still lots we haven’t covered

Saturday, June 15, 13

jQuery Mobile Advance

• MV* Frameworks

• Responsive Design

• Deep Templating

• Memory Management

• Unit Testing

• Nag Phillip until he schedules it!

Saturday, June 15, 13

top related