Download Slides

Download Slides

Say Hello To Offline First How to build applications for the real world we <3 GOTOBerlin Ola Gasidlo - Developer for +10 years - Core Member of Hoodie - Co-Organizer of OTSConf && RejectJS twitter: @misprintedtype Agenda 1. What & why? 2. Problems 3. New approach 4. Implementation @misprintedtype What & why? @misprintedtype The internet turned 25 last year! @misprintedtype We grew up. @misprintedtype @misprintedtype amount of mobile-only web users is out of reach @misprintedtype Tell me... @misprintedtype @misprintedtype Problems @misprintedtype @misprintedtype @misprintedtype offline > error handling @misprintedtype inform user @misprintedtype @misprintedtype build trust @misprintedtype http://branch.com/b/redesigning-the-save-symbol-let-s-do-this http://branch.com/b/redesigning-the-save-symbol-let-s-do-this organise data @misprintedtype @misprintedtype decide @misprintedtype @misprintedtype @misprintedtype @misprintedtype @misprintedtype ? @misprintedtype @misprintedtype @misprintedtype @misprintedtype @misprintedtype @misprintedtype ? @misprintedtype ? @misprintedtype ? @misprintedtype @misprintedtype ? @misprintedtype @misprintedtype New Approaches @misprintedtype Rethink! (but how?) @misprintedtype http://hood.ie Implementation @misprintedtype files data files data Manifest @misprintedtype App Cache is a douchebag! http://alistapart.com/article/application-cache-is-a-douchebag App Manifest 1. Files always come from the cache (also if you are online!) @misprintedtype App Manifest 2. App Cache only updates if manifest changed @misprintedtype App Manifest 3. App Cache is an additional cache @misprintedtype App Manifest 4. Non-cached resources will not load @misprintedtype App Cache nanny https://www.npmjs.org/package/appcache-nanny @misprintedtype Work it! @misprintedtype Web what?! @misprintedtype web worker - HTML5 feature - runs JS in browser @misprintedtype @misprintedtype UI Events large API data DOM @misprintedtype @misprintedtype async !== concurrency @misprintedtype @misprintedtype @misprintedtype @misprintedtype @misprintedtype Encoding && decoding large strings Complex mathematical calculations Prefetching && caching data @misprintedtype Network requests Manipulation on localStorage Image manipulation @misprintedtype real-time text analysis processing video or audio data Polling web services @misprintedtype // worker.js - no access // window window.alert(`Work it!`); // document document.getElementById(`danceParty`); // parent window.globalFunction(); @misprintedtype no libs depending on these objects, for example @misprintedtype @misprintedtype / @lewiscowper // worker.js // navigator navigator.onLine; // location location.href; // xhr xmlhttp.send(); @misprintedtype // worker.js // appCache applicationCache.status; // import import `worker-script`; @misprintedtype @misprintedtype / @lewiscowper Web workers - amazing litte helpers @misprintedtype 2 tyes of workers - dedicated workers - shared workers @misprintedtype dedicated worker @misprintedtype shared worker @misprintedtype // available? function areWorkersAvailable() { return !!window.Worker; } @misprintedtype // run worker run! // app.js var worker = new Worker(`task.js`); @misprintedtype @misprintedtype ? @misprintedtype demo // map.js http://slides.html5rocks.com/#web-workers @misprintedtype more demo // examples.js http://greenido.github.io/Web-Workers-Examples-/ @misprintedtype @misprintedtype / @lewiscowper @misprintedtype / @lewiscowper SPWA MPS @misprintedtype / @lewiscowper Service Worker @misprintedtype Service Worker Why? @misprintedtype https://jakearchibald.com/2014/offline-cookbook/ https://jakearchibald.com/2014/offline-cookbook/ Service Worker shut down at end of events @misprintedtype Service Worker scriptable caches @misprintedtype Service Worker promises @misprintedtype SW lifecycle @misprintedtype http://www.html5rocks.com/en/tutorials/service-worker/introduction/ http://www.html5rocks.com/en/tutorials/service-worker/introduction/ http://www.html5rocks.com/en/tutorials/service-worker/introduction/ https://jakearchibald.github.io/isserviceworkerready/ @misprintedtype Service Worker https://github.com/slightlyoff/ServiceWorker https://jakearchibald.github.io/isserviceworkerready/ https://www.youtube.com/watch?v=SmZ9XcTpMS4&list=PL37ZVnwpeshGPw2RfUGNQbPsU_WGpi05J @misprintedtype offline cookbook http://jakearchibald.com/2014/offline-cookbook/ @misprintedtype files data files data Do not harm humans! (first law of robotics) @misprintedtype Do not lose data! (first law of offline first) @misprintedtype PouchDB + CouchDB = <3 @misprintedtype CouchDB @misprintedtype Stephans data Hannes data (share with Hannes) Stephans partial data (replicated) @misprintedtype @misprintedtype PouchDB ? @misprintedtype browser storage limitation confirm Firefox IndexedDB unlimited y Chrome / Opera / IndexedDBPouchDB% of storage y Android 4.4+ IE 10+ SQLite 250MB n Mobile Safari WebSQL 50MB n Safari WebSQL 5MB -> 500MB y Android 4.3 and IndexedDB 200MB n lower hoodie <3 you @misprintedtype / @hoodiehq .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    134 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us