building modern progressive web apps with polymer · building modern progressive web apps with...

59
Building modern progressive web apps with Polymer

Upload: others

Post on 20-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Building modern progressive web apps

with Polymer

Page 4: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

What exactly is a Progressive Web App?

Page 6: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Radically improving web user experience

Page 7: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 19: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 20: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

17 000+ developers across 35+ countries

Page 22: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Image Source: Novatv

Page 23: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

sw-precacheBuild-time precaching for static assets

github.com/GoogleChrome/sw-precache

Page 24: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

sw-toolboxRuntime caching strategies & expiration

github.com/GoogleChrome/sw-toolbox

Page 25: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 26: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 27: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 28: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 29: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 30: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Routing

Runtime Handlers

Request Behaviors

Framework Layers

Page 31: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Framework Layers● Routes match URLs and apply Handlers

○ RegExpRoute○ ExpressRoute○ … and more!

Routing

Page 32: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

BrowserRequest

Web API

Server

Traditional

Page 35: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

BrowserRequest

Web API

Server

Progressive web apps (PWA)

ServiceWorker

Cache

Page 36: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Polymer overview

Page 37: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Web Components

Page 39: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 40: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

500 + projects

6,000+ elements

Page 42: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 43: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Building modern progressive web apps

with Polymer

Page 46: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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 · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 49: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Security

Page 50: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 51: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 52: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Template Shadow dom v0 Custom Elements v0 HTML Imports

Page 53: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Template Shadow dom v1

Custom Elements v1 HTML Imports

Page 54: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

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

Page 55: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

#UseThePlatform

Page 56: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Resourceshttps://goo.gl/A4w47C

Page 57: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive
Page 58: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

MyTeletouch your phone as TV-PC wireless keyboard

Page 59: Building modern progressive web apps with Polymer · Building modern progressive web apps with Polymer. Image Source: giphy.com. @d_danailov. Topics Today What exactly are Progressive

Questions