На мобильных устройствах приходится более половины трафика в сети, а веб-приложения позволяют пользователям делать что-то в браузере, конкурирующем с родными приложениями, но есть проблема: качество соединений и устройств сильно варьируется во всем мире.
Удовлетворение пользователей пользователями от молниеносных соединений в Сеуле и пользователей в сельской Индии на устаревшем телефоне — это последняя проблема удобства использования, а решение Progressive Web Apps — это решение.
Использование PWA прогрессивное повышение загрузки самого важного контента, а затем добавление презентационных и функциональных дополнений по мере необходимости, а это означает, что все ваши пользователи получают как можно более быстрый опыт работы с базой данных.
Хотя прогрессивные веб-приложения приносят много преимуществ и функциональности в Интернете, они не требуют переписывания всего вашего приложения. Любое приложение может быть преобразовано в PWA, добавив к нему несколько дополнительных слоев.
Для достижения наилучших результатов вам нужно будет уделять особое внимание производительности с самого начала, но это верно для любого веб-приложения. Здесь мы пройдем шаги, чтобы сделать ваше приложение прогрессивным.
Содержание статьи
01. Служить над HTTPS
Давайте будем честными: вы все равно должны это делать. SSL добавляет дополнительный уровень безопасности в Интернет, помогая вашим пользователям чувствовать себя в безопасности при использовании вашего сайта. С помощью PWA HTTPS имеет важное значение для использования сервисных работников и разрешения установки домашнего экрана. Вы можете приобрести сертификат SSL у своего регистратора домена за небольшую плату, а затем настроить его через свой хостинг.
02. Создать оболочку приложения
Ваша оболочка приложения — это первое, что загружается — первое, что видит пользователь. Он должен существовать полностью в вашем HTML-документе с индексом, с встроенным CSS, чтобы убедиться, что он отображается как можно быстрее, и ваш пользователь не смотрит на белый экран дольше, чем необходимо. Оболочка приложения является частью шаблона прогрессивного улучшения. Ваше приложение должно как можно скорее предоставить пользовательский контент, а затем постепенно увеличивать его по мере загрузки большего количества данных (вероятно, JavaScript).
Пример ниже берется из приложения React.js. Пользователь представлен контур приложения и индикатор загрузки в index.html. Затем, после загрузки JavaScript и перезагрузки, полное приложение отображается в оболочке.
Чат
03. Зарегистрируйте сервисного работника
Чтобы воспользоваться полным спектром плюсов PWA (push-уведомления, кеширование, установить подсказки), вам понадобится сотрудник службы.
К счастью, их довольно легко установить вверх. Ниже мы сначала проверяем, поддерживает ли браузер пользователя рабочих служб. Тогда, если это так, мы можем двигаться вперед, зарегистрировав файл рабочего рабочего, который называется service-worker.js . Обратите внимание, что в этот момент вам не нужно ничего особенного внутри этого файла — он может быть пустым.
. В приведенном ниже примере мы покажем, как задействовать три ключевых события жизненного цикла сервис-работника. Это «установить», когда пользователь впервые посещает вашу страницу; «активировать», незадолго до завершения регистрации; и 'fetch', когда приложение делает сетевой запрос. Последний имеет значение для кэширования и автономной работы.
// service-worker.js
self.addEventListener ('install', function () {
console.log ( 'Установить!');
});
self.addEventListener ("активировать", event => {
console.log ( 'Активировать!');
});
self.addEventListener ('fetch', function (event) {
console.log ('Fetch!', event.request);
});
04. Добавить push-уведомления
Работники службы позволяют вашим пользователям получать push-уведомления через веб-Push API. Чтобы получить доступ к нему, вы можете нажать self.registration.pushManager из вашего рабочего файла службы. Поскольку отправка push-уведомлений в значительной степени зависит от настроек вашего бэкэнд, мы не будем здесь погружаться.
Если вы запускаете приложение с нуля, служба Firebase от Google поставляется с Firebase Cloud Messaging для относительно безболезненных push-уведомлений. В приведенном ниже коде показано, как регистрировать push-уведомления через Push API.
navigator.serviceWorker.ready.then (функция (регистрация) {
if (! registration.pushManager) {
alert («Нет поддержки push-уведомлений»);
return false;
}
// Подписываем `push-уведомление` из push-менеджера
registration.pushManager.subscribe ({
userVisibleOnly: true // Всегда показывать уведомление при получении
})
.then (функция (подписка) {
console.log ( 'подпиской.');
})
.catch (функция (ошибка) {
console.log ('Ошибка подписки:', ошибка);
});
})
05. Добавьте манифест веб-приложения
. Чтобы сделать ваше приложение доступным, вам нужно включить manifest.json в корневой каталог приложения. Вы можете рассматривать это как описание своего приложения, похожее на то, что вы можете отправить в App Store. Он включает в себя значки, заставку, имя и описание.
Существует также некоторая настройка того, как ваше приложение появляется, когда оно запускается с главного экрана пользователя: вы хотите показать адресную строку в браузере или нет? Какой цвет вы хотите, чтобы строка состояния была? И так далее. Обратите внимание, что соответствующий manifest.json должен включать полный спектр размеров значков для различных устройств. Код ниже представляет собой предварительный просмотр некоторых свойств, которые может содержать ваш манифест.
{
«short_name»: «Чат»,
«name»: «Чат»,
«Значки»: [
{
"src":"https://artforlife.ru/wp-content/uploads/2018/10/pre-kak-sozdat-progressivnoe-veb-prilozhenie.png",
"sizes": "192x192",
"type": "image/png"
}
],
«start_url»: «/? utm_source = homescreen»,
"background_color": "# e05a47",
"theme_color": "# e05a47",
"display": "standalone"
}
06. Настройте запрос на установку
Когда пользователь посещает PWA с рабочим и манифестатором, Chrome автоматически предложит установить его на свой рабочий стол, учитывая следующее: пользователь должен дважды посещать сайт с пятью минутами между посещениями.
Идея здесь состоит в том, чтобы дождаться, пока пользователь проявит интерес к вашему приложению, а затем попросит их сделать это устройством своего устройства (это резко контрастирует с привычным приложением, который требует инвестиций до фронта).
Но могут быть случаи, когда вы хотите показать приглашение установки в разных ситуациях, например, после того, как пользователь предпримет конкретное полезное действие. Для этого перехватим событие beforeinstallprompt и сохраним его позже, а затем разворачиваем подсказку, когда сочтем нужным.
window.addEventListener ('beforeinstallprompt', e => {
console.log ('beforeinstallprompt Event fired');
e.preventDefault ();
// Спрячьте событие, чтобы его можно было запустить позже.
this.deferredPrompt = e;
return false;
});
// Если вы хотите вызвать приглашение:
this.deferredPrompt.prompt ();
this.deferredPrompt.userChoice.then (choice => {
console.log (выбор);
});
this.deferredPrompt = null;
07. Анализируйте производительность своего приложения
Производительность — это сердце и душа PWA. Ваше приложение должно быть быстрым для пользователей во всех сетевых условиях. Кэширование и автономные возможности помогают много, но в конце дня ваше приложение должно быть быстрым, даже если у пользователя нет браузера для поддержки технологии сервисных работников. Это определение прогрессивного улучшения — обеспечить отличный опыт для всех, независимо от современности устройства или условий сети.
Для этого полезным набором показателей является система RAIL. RAIL — это то, что Google называет «ориентированной на пользователя модель производительности» — набор рекомендаций по измерению производительности нашего приложения.
Сокращение означает Response (как долго требуется, чтобы приложение реагировало на действия пользователя), анимация (поддерживающая скорость анимации со скоростью 60 кадров в секунду), Idle (с использованием времени, когда ваше приложение ничего не делает для загрузки и загружать ваше приложение за одну секунду или меньше.
Вот таблица значимых тестов для загрузки приложений, предоставленная автором статьи Meggin Kearney в Google Web Fundamentals.
]