fast-start-with-pwa-servise-workers

所属分类:collect
开发工具:JavaScript
文件大小:0KB
下载次数:0
上传日期:2023-02-28 02:33:40
上 传 者sh-1993
说明:  普华永道。服务工人。КеироВание
(PWA. Service Workers. Кеширование)

文件列表:
LICENSE (1072, 2020-03-30)
PWA.pptx (9092562, 2020-03-30)
app.js (1541, 2020-03-30)
favicon.png (4769, 2020-03-30)
images/ (0, 2020-03-30)
images/icons/ (0, 2020-03-30)
images/icons/icon-128x128.png (7467, 2020-03-30)
images/icons/icon-144x144.png (8842, 2020-03-30)
images/icons/icon-152x152.png (9506, 2020-03-30)
images/icons/icon-192x192.png (13039, 2020-03-30)
images/icons/icon-384x384.png (34212, 2020-03-30)
images/icons/icon-512x512.png (51446, 2020-03-30)
images/icons/icon-72x72.png (3362, 2020-03-30)
images/icons/icon-96x96.png (5019, 2020-03-30)
index.html (616, 2020-03-30)
manifest.json (1103, 2020-03-30)
offline.html (587, 2020-03-30)
package-lock.json (6387, 2020-03-30)
package.json (530, 2020-03-30)
serviceWorker.js (1240, 2020-03-30)
styles.css (135, 2020-03-30)

# Fast start with PWA. Service Workers. Кеширование ## Что такое Progressive Web Apps Веб-проекты, которые выглядят и ведут себя, как мобильные приложения: * Работают в режиме ```offline``` * Имеют иконку на рабочем столе * Синхронизируют данные в фоновом режиме ![PWA](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/pwa.png) --- ## Плюсы и возможности **Плюсы** * Надежные - моментальная загрузка, вы никогда не увидите динозаврика * Быстрые - быстрый отклик на действия пользователя с плавной анимацией и скроллом * Чарующие - предоставляется максимально возможный нативный пользовательский опыт **Возможности** * ```Push``` уведомления * Фоновая синхронизация * Доступность ```offline``` * Возможность установки на рабочий экран телефона * Доступ к камере устройства * Доступ к геопозиции ... --- ## PWA и SPA SPA можно преобразовать в PWA, так же как и любую другую веб-страницу --- ## Основные "слоны" PWA * Server Workers * Фоновая синхронизация * Манифест, разрешающий добавление на рабочий экран * Работа по ```HTTPS``` * ```Push``` уведомления --- ## Lighthouse Расширение диагностики сайта под Chrome. Проверяет: * Как быстро грузится сайт * Форматы картинок и их сжатие * Неиспользуемый css * SEO * Best practice * Соответствие требованиям PWA * Скорость загрузки в 3G * Доступность ```offline``` * Возможность установить --- ## manifest.json Обычный json файл, содержащий информацию для браузера, как ваше веб-приложение должно себя вести, когда "установлено" на мобильное устройство. Наличие этого файла обязательно в Chrome для показа предложения ```Add to Home Screen``` --- ## Web App Manifest Generator Сервис генерации манифеста для проекта (open source) https://app-manifest.firebaseapp.com/ ![Web App Manifest Generator](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/webappmanifestgenerator.png) --- ## HTML Добавьте в тэг ```head``` ```html ``` --- ## Тестирование на реальном устройстве 1. Chrome dev tools -> more tools -> remote devices 1. Дать доступ на экране устройства 1. Поставить галочку ```Port forwarding```, добавить новое правило с адресом PWA (## localhost:3000) 1. Кликнуть по имени устройства 1. New tab -> адрес PWA -> inspect --- ## Service Workers ```Service Workers``` представляют собой процессы в фоновом режиме, которые обеспечивают взаимодействие между приложением и сетью. Данные процессы способны перехватывать http-запросы и кешировать информацию, что может быть использовано для подгрузки данных при отсутствии сети. В плане реализации ```Service Workers``` - это javascript скрипты, которые слушают события и выполняют задачи. ![Service Worker](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/serviceworker.jpeg) **Browser support** ![Service Workers Browser support](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/serviceworkersbrowsersupport.png) --- ## Service Worker lifecycle 1. register 1. installation 1. activation 1. idle 1. termination ![Service Worker lifecycle](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/lifecycle.png) **serviceWorker.js** ![Service Worker](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/serviceworker.png) **app.js** ![Service Worker](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/serviceregister.png) --- ## Когда обновляется Service Worker? * При **закрытии** вкладки со старым процессом и открытии новой * Добавить строчку ```self.skipWaiting();``` в listener для install --- ## Кеширование с Service Workers **Зачем?** * Плохое соединение * Нет соединения (лифт/метро) * Lie-Fie **Как?** Cache API - механизм для хранения пары запрос/ответ (без поддержки в Safari) **Что?** * js * css * картинки * шрифты ![Cache](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/cache_static.png) --- ## cashes Объект, отвечающий за взаимодействие с кешем ### Основые методы: * match(Request) - Проверяет, является ли данный Request ключом в любом из объектов Cache, отслеживаемых объектом CacheStorage, и возвращает Promise, который успешно завершится, когда найдет совпадение. * open(cacheName) - Возвращает Promise, который успешно завершится, когда объект Cache найдет необходимый объект с cacheName (если такого нет, то создаст новый). * has(cacheName) - Возвращает Promise, который успешно завершится и вернет true, если объект Cache содержит кеш с установленным cacheName. --- ## Динамическое кеширование Метод ```put``` позволяет добавлять данные налету. ![cache_dyn](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/readme-images/cache_dyn.png) ## Установка на рабочий экран телефона У ```window``` есть метод ```e.prompt()``` и listener ```beforeinstallprompt```, который можно вызвать, если приложение соответствует определенным требованиям (в Chrome отрабатывает автоматически). * Приложение еще не установлено * Пользователь взаимодействовал с доменом минимум 30 секунд * Приложение соответствует требованиям PWA --- ## Полезные ссылки * [Progressive Web Apps](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://developers.google.com/web/progressive-web-apps/) * [Are Service Workers Ready?](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://jakearchibald.github.io/isserviceworkerready/) * [Getting Started with Service Workers](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://developers.google.com/web/fundamentals/getting-started/primers/service-workers) * [Upgrading Your Service Worker Cache](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://www.afasterweb.com/2017/01/31/upgrading-your-service-worker-cache/) * [Cache MDN](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://developer.mozilla.org/en-US/docs/Web/API/Cache) * [Caching strategies](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://serviceworke.rs/caching-strategies.html) * [The Web App Manifest](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://developers.google.com/web/fundamentals/web-app-manifest/) * [Progressive Web Apps 101: the What, Why and How](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://medium.freecodecamp.org/progressive-web-apps-101-the-what-why-and-how-4aa5e9065ac2) * [Progressive Web Apps 102: Building a Progressive Web App from scratch](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://medium.freecodecamp.org/progressive-web-apps-102-building-a-progressive-web-app-from-scratch-397b72168040) * [Response.clone()](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://developer.mozilla.org/en-US/docs/Web/API/Response/clone), [Why do we perform response.clone()?](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://github.com/mozilla/serviceworker-cookbook/issues/264) * [How to Use the 'beforeinstallprompt'](https://github.com/kdmatrosov/fast-start-with-pwa-servise-workers/blob/master/https://love2dev.com/blog/beforeinstallprompt/)

近期下载者

相关文件


收藏者