building modern progressive web apps with polymer

59
Building modern progressive web apps with Polymer

Upload: dimitar-danailov

Post on 27-Jan-2017

137 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Building modern Progressive Web Apps with Polymer

Building modern progressive web apps

with Polymer

Page 4: Building modern Progressive Web Apps with Polymer

Topics Today

● What exactly are Progressive Web Apps ?● Tools and Libraries for Progressive Web Apps● Polymer overview● Building modern progressive web apps with Polymer● There’s no silver bullet

Page 5: Building modern Progressive Web Apps with Polymer

What exactly is a Progressive Web App?

Page 6: Building modern Progressive Web Apps with Polymer

Radically improving web user experience

Page 7: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Page 8: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Page 9: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

Page 10: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Page 11: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Page 12: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

Page 13: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it

Page 14: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it

Re-engageable - Makes re-engagement easy through features like push notifications

Page 15: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it

Re-engageable - Makes re-engagement easy through features like push notifications

Installable - Allows users to "keep" apps they find most useful on their home screen without the hassle of an app store

Page 16: Building modern Progressive Web Apps with Polymer

Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core tenet.

Responsive - Fits any form factor: desktop, mobile, tablet or whatever is next

Connectivity independent - Enhanced with service workers to work offline or on low-quality networks

App-like - Feels like an app to the user with app-style interactions and navigation because it's built on the app shell model

Fresh - Always up-to-date thanks to the service worker update process

Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.

Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing search engines to find it

Re-engageable - Makes re-engagement easy through features like push notifications

Installable - Allows users to "keep" apps they find most useful on their home screen without the hassle of an app store

Linkable - Easily share via URL, does not require complex installation

Page 18: Building modern Progressive Web Apps with Polymer
Page 19: Building modern Progressive Web Apps with Polymer
Page 20: Building modern Progressive Web Apps with Polymer

Housing.com: User Acquisition Costs

$ 3.75

Android App Mobile Web

$ 0.07

1 vs 53

Page 21: Building modern Progressive Web Apps with Polymer

17 000+ developers across 35+ countries

Page 22: Building modern Progressive Web Apps with Polymer

Image Source: Novatv

Page 23: Building modern Progressive Web Apps with Polymer

sw-precacheBuild-time precaching for static assets

github.com/GoogleChrome/sw-precache

Page 24: Building modern Progressive Web Apps with Polymer

sw-toolboxRuntime caching strategies & expiration

github.com/GoogleChrome/sw-toolbox

Page 25: Building modern Progressive Web Apps with Polymer
Page 26: Building modern Progressive Web Apps with Polymer
Page 27: Building modern Progressive Web Apps with Polymer
Page 28: Building modern Progressive Web Apps with Polymer
Page 29: Building modern Progressive Web Apps with Polymer
Page 30: Building modern Progressive Web Apps with Polymer

Routing

Runtime Handlers

Request Behaviors

Framework Layers

Page 31: Building modern Progressive Web Apps with Polymer

Framework Layers● Routes match URLs and apply Handlers

○ RegExpRoute○ ExpressRoute○ … and more!

Routing

Page 32: Building modern Progressive Web Apps with Polymer

Framework Layers● Routes match URLs and apply Handlers

○ RegExpRoute○ ExpressRoute○ … and more!

● Called by Route, or used in your own code (Caching strategies)

○ StaleWhileRevalidate○ NetworkFirst○ … and more!

Routing

RuntimeHandlers

Page 33: Building modern Progressive Web Apps with Polymer

Framework Layers● Routes match URLs and apply Handlers

○ RegExpRoute○ ExpressRoute○ … and more!

● Called by Route, or used in your own code

○ StaleWhileRevalidate○ NetworkFirst○ … and more!

● Custom callbacks for network & caches○ requestWillFetch (Custom Action)○ fetchDidFail (Custom Action)○ cacheDidUpdate (Custom Action)

Routing

RuntimeHandlers

RequestBehaviors

Page 34: Building modern Progressive Web Apps with Polymer

BrowserRequest

Web API

Server

Traditional

Page 35: Building modern Progressive Web Apps with Polymer

BrowserRequest

Web API

Server

Progressive web apps (PWA)

ServiceWorker

Cache

Page 36: Building modern Progressive Web Apps with Polymer

Polymer overview

Page 37: Building modern Progressive Web Apps with Polymer

Web Components

Page 39: Building modern Progressive Web Apps with Polymer
Page 40: Building modern Progressive Web Apps with Polymer

2014 - Polymer 0.5 (Developer preview)

2015 - Polymer 1.0

2016 and 2017 - Polymer 2.0

Page 41: Building modern Progressive Web Apps with Polymer

500 + projects

6,000+ elements

Page 42: Building modern Progressive Web Apps with Polymer
Page 43: Building modern Progressive Web Apps with Polymer

My first component

Picture-frame.html

<link rel=”import” href="https://polygit2.appspot.com/components/polymer/polymer.html"><dom-module id=”picture-frame”> <template> <style> :host { display: block; } </style> <h1>Hello jstalks</h1> <!-- any children are rendered here → <content></content> </template> <script> Polymer({ ‘is’: ‘picture-frame’ }) </script></dom-module>

<picture-frame> <img src=”jstalks.png” alt=”jstalks” /></picture-frame>

Page 45: Building modern Progressive Web Apps with Polymer

Building modern progressive web apps

with Polymer

Page 46: Building modern Progressive Web Apps with Polymer

Push components for initial route

Pre - cache components for remaining routes

Lazy - load & create next routes on-demand

Render the initial route asap

The PRPL Pattern

Page 47: Building modern Progressive Web Apps with Polymer
Page 49: Building modern Progressive Web Apps with Polymer

Security

Page 50: Building modern Progressive Web Apps with Polymer
Page 51: Building modern Progressive Web Apps with Polymer
Page 52: Building modern Progressive Web Apps with Polymer

Template Shadow dom v0 Custom Elements v0 HTML Imports

Page 53: Building modern Progressive Web Apps with Polymer

Template Shadow dom v1

Custom Elements v1 HTML Imports

Page 54: Building modern Progressive Web Apps with Polymer

How I learned to stop worrying and love the Polymer toolbox (Polymer Summit 2016)

Page 55: Building modern Progressive Web Apps with Polymer

#UseThePlatform

Page 56: Building modern Progressive Web Apps with Polymer

Resourceshttps://goo.gl/A4w47C

Page 57: Building modern Progressive Web Apps with Polymer
Page 58: Building modern Progressive Web Apps with Polymer

MyTeletouch your phone as TV-PC wireless keyboard

Page 59: Building modern Progressive Web Apps with Polymer

Questions