+ All Categories
Home > Technology > Modern Web Applications Utilizing HTML5 APIs

Modern Web Applications Utilizing HTML5 APIs

Date post: 08-May-2015
Category:
Upload: ido-green
View: 3,681 times
Download: 1 times
Share this document with a friend
Description:
Modern web apps are rich, interactive applications. This webcast will cover new techniques for building modern web apps and how to utilize the latest HTML5 APIs to create a new class of web apps that will delight and amaze your users. In this interactive event, Ido Green, the author of Web Workers, will cover the following: * Defining the modern web app * Designing a modern web app * HTML5 Power tools/APIs * Tips & best practices
42
Modern Web Applications Utilizing HTML5 APIs Ido Green, Developer Advocate plus.google.com/+greenido
Transcript
Page 1: Modern Web Applications Utilizing HTML5 APIs

Modern Web Applications Utilizing HTML5 APIs

Ido Green, Developer Advocateplus.google.com/+greenido

Page 2: Modern Web Applications Utilizing HTML5 APIs

Modern Web Applications

Page 3: Modern Web Applications Utilizing HTML5 APIs

Modern Applications

● Self Contained

● "Offline First"

● MV* Frameworks

● Device Aware

● #Perfmatters

Page 4: Modern Web Applications Utilizing HTML5 APIs

● Performance! #Perfmatters

● Flaky connections (e.g. cafes, car)

● Airplane, road trip, deserted island

● Consolidates the concept of permanent application.

* We will use: Lawnchair for our demo.

Offline - Why?

Page 5: Modern Web Applications Utilizing HTML5 APIs

● Storing assets: AppCache

● Storing data: localStorage, IndexedDB, File API.

● Offline first:○ Pretend that there's no internet connection○ Implement a sync layer that works only when

online.

Offline - How?

navigator.onLine & window.(ononline|onoffline)

Page 6: Modern Web Applications Utilizing HTML5 APIs

Offline - Appcache

<html manifest="myapp.manifest">

CACHE MANIFEST

#version 1.2.3

#JS

js/main.js

#CSS

css/bootstrap.min.css

#Images

img/left-back.png

● You can use it TODAY:

○ http://caniuse.com/#feat=offline-apps

● Will also be used when the user

is online.

● Allows you to define fallback

pages.

● (!) Don't cache the manifest!

● http://www.html5rocks.com/en/tutorials/app

Page 7: Modern Web Applications Utilizing HTML5 APIs

Use abstractions

● Lawn Chair - brian.io/lawnchair/

● asyncStorage - https://github.com/WebReflection/db

● IndexedDBShim - nparashuram.com/IndexedDBShim/

Page 8: Modern Web Applications Utilizing HTML5 APIs

Design Web Applications

Page 9: Modern Web Applications Utilizing HTML5 APIs

(Da New) Design process

Page 10: Modern Web Applications Utilizing HTML5 APIs

A Page? An App?

● It's not pages anymore

● Design from the content out

● Your web app as a collection of (web) components● Less is more:

Any addition has the potential to ruin our MVP

Page 11: Modern Web Applications Utilizing HTML5 APIs

Design A List Again?

● Don't reinvent the wheel

○ http://html5rock.com

○ http://pttrns.com

○ http://mobile-patterns.com

● Don't let "web" nor "Enterprise"

be an excuse

Page 12: Modern Web Applications Utilizing HTML5 APIs

Design - Phones? Tablets?

● Start with the UX

○ Balsamiq, Creately,

MockFlow

○ Aim for common

device breakpoints

(4:3, 16:9)

Page 13: Modern Web Applications Utilizing HTML5 APIs

Philosophy: Adaptive Apps● Adaptive apps

○ Custom views and templates for each form factor○ Shared the model

● Use responsive design within the form factor

● progressive enhancement So your app is useful on any platform.

Page 14: Modern Web Applications Utilizing HTML5 APIs

Building Web Applications

Page 15: Modern Web Applications Utilizing HTML5 APIs

MV* For The Win

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

Page 16: Modern Web Applications Utilizing HTML5 APIs

AngularJS - Client Side Framework

Angular.js - Let you extend HTML vocabulary for your application.

● Data binding

● Extensible HTML

● Dependency Injection / TestableMore options: addyosmani.github.com/todomvc/

Page 17: Modern Web Applications Utilizing HTML5 APIs

Mobile World - RESTful World

Photos● GET http://ex.com/_ah/api/picturesque/v1/photos● POST http://ex.com/_ah/api/picturesque/v1/photo● PATCH http://ex.com/_ah/api/picturesque/v1/photo/id

Users● POST http://ex.com/_ah/api/picturesque/v1/users/join

And more...

Page 20: Modern Web Applications Utilizing HTML5 APIs

Device APIs WG: www.w3.org/2009/dap/

● Geolocation API (Psst... support in DevTools)

● Device Orientation API (accelerometer in your DevTools)

● WebGL ( GPU )

● HTML5 Filesystem API

● Network connectivity

● Battery API

● Gamepad API

● WebRTC

● Web Audio API ( core audio )

"Device APIs"

Page 21: Modern Web Applications Utilizing HTML5 APIs

Google Cloud Endpoints

Page 22: Modern Web Applications Utilizing HTML5 APIs

Modern Apps and The Server Conundrum

Have to deal with a server○ Offload Computation○ Sharing and Collaboration○ Logs

But who wants to run a server?○ Spikey traffic - Scaling challenges○ Client Server communication○ Serialization○ OAuth Dance

Page 23: Modern Web Applications Utilizing HTML5 APIs

Google App Engine

Page 24: Modern Web Applications Utilizing HTML5 APIs

Google App Engine

Page 25: Modern Web Applications Utilizing HTML5 APIs

Back the Truck Up

Page 27: Modern Web Applications Utilizing HTML5 APIs

Google APIs: Client Libraries ● Web

○ JavaScript: google-api-javascript-client○ Node.js: google-api-nodejs-client○ Dart: google-api-dart-client

● Mobile○ Objective C: google-api-objectivec-client○ Java: google-api-java-client

● Server-side○ Ruby: google-api-ruby-client○ Python: google-api-python-client○ Go: google-api-go-client○ PHP: google-api-php-client○ .NET: google-api-dotnet-client○ GWT: gwt-google-apis

Page 28: Modern Web Applications Utilizing HTML5 APIs

Google APIs

HTML<body> ... <script type="text/javascript"> function init() { gapi.client.load(‘urlshortener’, 'v1’, function() {}); } </script> <script src="https://apis.google.com/js/client.js?onload=init"></script></body>

Page 29: Modern Web Applications Utilizing HTML5 APIs

Google Cloud Endpoints

Page 30: Modern Web Applications Utilizing HTML5 APIs

Simple GET API Request

Page 31: Modern Web Applications Utilizing HTML5 APIs

Using Data Model for Insert

[email protected](name='picturesque', version='v1', description='Photos API for Picturesque App')class PicturesqueApi(remote.Service):

@Photo.method(path='photo', name='photo.insert') def PhotoInsert(self, photo): # do some validation photo.put() return photo

Page 32: Modern Web Applications Utilizing HTML5 APIs

Insert With Drag and Drop Demo

Python

Page 34: Modern Web Applications Utilizing HTML5 APIs

List Demo - Get Photos Baby!

Pythonvar req = gapi.client.picturesque.photo.list();req.execute(function(data) { data.items = data.items || []; console.log("-- We have " + data.items.length); addPhotos(data.items);});

Page 36: Modern Web Applications Utilizing HTML5 APIs

"Smart" Client

● Network calls are expensive

● "Client" photo library ○ Lawnchair allows us to store photos' metadata

offline○ filer.js to store the photos○ Application Cache

● Do not Repeat Yourself○ Applies to code and to API calls○ Only retrieve photos that have been updated

since the last API call

Page 37: Modern Web Applications Utilizing HTML5 APIs

Chrome DevTools

Page 38: Modern Web Applications Utilizing HTML5 APIs

What Is New?

○ Edit local projects

○ Check Devices: User agents, screen sizes, touch events etc'

○ Map source for: coffeescript, sass, dart etc'.

○ Test on your mobile device from DevTools.

○ More?

■ GDL "The Breakpoint" episodes

■ Improving Your 2013 Productivity With The Chrome DevTools

Page 39: Modern Web Applications Utilizing HTML5 APIs

The Screen Are Smaller

● Debug○ Remote debugging hack with jsconsole.com○ Chrome for Android remote debug with DevTools.

● Testing○ Qunit to test models○ Selenium and its mobile option Remote Web Driver

● How To○ http://mobile-html.appspot.com/

Page 41: Modern Web Applications Utilizing HTML5 APIs

Key Take Aways

● Build powerful applications with Google Cloud Endpoints

● HTML5 APIs are ready and getting better fast.

● AngularJS - be more productive

● Leverage Modern Browser Features:○ Offline○ Web RTC○ New CSS3 artifacts○ Web workers

Page 42: Modern Web Applications Utilizing HTML5 APIs

Questions?

Ido GreenDeveloper Relationshttp://plus.google.com/+greenido

App:: https://picturesque-app.appspot.com/

HTML5 APIs: http://ido-green.appspot.com/html5fest-il/

Slides: http://ido-green.appspot.com/

Thank you!


Recommended