Mobile Web App Stack

  -  

Of course we're using Geolocation!

Who?

+


@


Agenda

WARNING!

Mobile trends

Mobile internet usage to overtake desktop by 2014


global mobile devices pass desktop in 2015
.

Mobile Browsers

Mobile is ~95% WebKit

Main missing features:
  • WebGL
  • Camera API
  • IndexedDB
  • Web Audio
.

Web Vs. Native

  • Web as a unified platform
  • Native is a moving target: iOS, Android, WP7, etc
  • Native pushes the boundary - APIs that are closer to the metal
  • Standardized web moves more slowly, but catching up!

The case for Business

Good Examples

good mobile apps examples

.

Design

Design Tips

Plan / Think about it up-front!
Don't let "web" and "enterprise" be an excuse for poor UX

            Be inspired by mobile patterns 
e.g. Path, Flipboard, Twitter etc'.

Don't reinvent the wheel

.

Design - Low fidelity

Start with the UX
E.g. Balsamiq

mockup for our wonderful web app

Design - Per Device

Tablet != Phone != ...

a web app for phone is not for tablet and vs/vs

Philosophy: Adaptive Apps

Building

Model View Controller

  • Fundamental pattern for separating concerns
  • Model handles data and server persistence layer
  • View handles user input and rendering
  • Used to be on the server. Now moving to the thicker client.

Model View Controller

Checkout The Top 10 Javascript MVC Frameworks Reviewed

.

Paradox of choice

There are many MVC frameworks

.

Templating engines - 1

.

Templating engines - 2

is a logic-less templating engine


Example
          {{#items}} 
              {{#link}}<li><a href="{{url}}">{{name}}</a></li>{{/link}}
          {{/items}}
            +
            {"items": [{"name": "green", "link": true, "url": "#Green"},
                       {"name": "blue", "link": true, "url": "#Blue"}], }
            =
           <li><a href="#Green">green</a></li>
           <li><a href="#Blue">blue</a></li>
        

CSS Frameworks

Augmented CSS-style languages
  • $variables: true
  • .nesting { .allowed { font-color: bold; }}
  • mixins/inheritance

Many variants of syntax, but basically the same. My preference: SCSS
Also checkout: Less css

Layout - 1

Best practice:

          #flexbox { 
            display: box; box-orient: horizontal;
          } 
          #flexbox > p:nth-child(2), 
          #flexbox > p:nth-child(3) {
            box-flex: 1;
          }
        
(!) Caveat: new API just landed, but relatively few changes
.

Layout - 2

  • What about headers/footers?
    Use position: fixed;
  • How to scroll inside elements?
    Use overflow: scroll;
  • Inertial scrolling?
    -webkit-overflow-scrolling: touch;

Touch

Fingers != mouse. Design for multi-touch!

(!) Click delayed by 300ms on mobile. Use fast click.
and Developing for Multi-Touch
touch options

Offline First

Debugging

Testing

mobile testing on real devices

Optimization

Tips and tricks

It's all about speed

chromestatus.com

updates.html5rocks.com

Resources


Thanks! Questions?

@   +