A Прогрессивное веб-приложение (PWA ) является типом прикладное программное обеспечение, доставляемое через сеть, созданное с использованием общих веб-технологий, включая HTML, CSS и JavaScript. Он предназначен для работы на любой платформе, которая использует соответствующий стандартам браузер, включая настольные и мобильные устройства.
. были доступны для мобильных устройств с самого начала, они в целом были медленнее, имели меньше функций и меньше использовались, чем собственные приложения. Функции PWA позволяют сократить разрыв с собственными приложениями и создать аналогичный пользовательский интерфейс. Возможности включают
Поскольку прогрессивное веб-приложение представляет собой тип веб-страницы или веб-сайта, известного как веб- приложение, они не требуют отдельной комплектации или распространения. В частности, от разработчиков или пользователей не требуется устанавливать веб-приложения через системы цифрового распространения, такие как Apple App Store или Google Play. Однако для многих поставщиков PWA отсутствие видимости PWA в этих системах распространения является недостатком по сравнению с собственными приложениями. В той или иной степени основные магазины приложений начали использовать PWA, что позволило их найти в магазинах приложений.
По состоянию на апрель 2018 года функции PWA в разной степени поддерживаются Mozilla Firefox, Google Chrome, Apple Safari и Microsoft Edge, но другие браузеры могут поддерживать функции, которые потребуются в будущем. Некоторые компании отмечают значительные улучшения в широком спектре ключевых показателей эффективности после внедрения PWA, таких как увеличение времени, затрачиваемого на страницу, конверсии или доход.
На с выпуском iPhone в 2007 году Стив Джобс объявил, что веб-приложения, разработанные в HTML5 с использованием архитектуры AJAX, будут стандартом формат для приложений iPhone. Комплект для разработки программного обеспечения (SDK) не требуется, и приложения будут полностью интегрированы в устройство через механизм браузера Safari. Позже эта модель была заменена на App Store, как средство предотвращения взломов и успокоения разочарованных разработчиков. В октябре 2007 года Джобс объявил, что SDK будет запущен в следующем году. В результате, хотя Apple продолжала поддерживать веб-приложения, подавляющее большинство приложений iOS переместилось в App Store.
Начиная с начала 2010-х годов динамические веб-страницы позволяли использовать веб-технологии для создания интерактивных веб-приложений. Адаптивный веб-дизайн и гибкость размера экрана, которую он обеспечивает, сделали разработку PWA более доступной. Постоянные усовершенствования HTML, CSS и JavaScript позволили веб-приложениям включать более высокий уровень интерактивности, делая возможными нативные взаимодействия на веб-сайтах и, следовательно, на PWA.
Выпущен Firefox Firefox OS в 2013 году. Он задумывался как операционная система с открытым исходным кодом для запуска веб-приложений в качестве собственных приложений на мобильных устройствах с Gaia, построенным в качестве интерфейса HTML5. Разработка Firefox OS завершилась в 2016 году.
В 2015 году дизайнер Фрэнсис Берриман и инженер Google Chrome Алекс Рассел придумали термин «прогрессивные веб-приложения» для описания приложений, использующих преимущества новых поддерживаемых функций современными браузерами, включая сервис-воркеры и манифесты веб-приложений, которые позволяют пользователям обновлять веб-приложения до прогрессивных веб-приложений в их родной операционной системе (ОС). Затем Google приложил значительные усилия для продвижения разработки PWA для Android. С введением Apple поддержки сервис-воркеров для Safari в 2017 году PWA теперь поддерживаются в двух наиболее часто используемых мобильных операционных системах: Android и iOS.
. К 2019 году PWA были доступны на настольных компьютерах. браузеры Microsoft Edge (в Windows ) и Google Chrome (в Windows, macOS, Chrome OS и Linux ).
Прогрессивные веб-приложения разработаны для работы в любом браузере, совместимом с соответствующими веб-стандартами. Как и в случае с другими кросс-платформенными решениями, цель состоит в том, чтобы помочь разработчикам создавать кроссплатформенные приложения более легко, чем с собственными приложениями. По словам разработчиков Google, PWA имеет следующие характеристики:
Технические базовые критерии для того, чтобы сайт считался прогрессивным веб-приложением браузерами, были описаны Расселом в последующем сообщении:
Некоторые прогрессивные веб-приложения используют архитектурный подход, называемый Модель оболочки приложения. В этой модели сервис-воркеры хранят базовый пользовательский интерфейс или «оболочку » веб-приложения адаптивного веб-дизайна в автономном кэше браузера. Эта модель позволяет PWA поддерживать нативное использование с подключением к Интернету или без него. Это может сократить время загрузки за счет предоставления начального статического кадра, макета или архитектуры, в которые контент можно загружать как прогрессивно, так и динамически.
Существует множество широко используемых технологий для создания прогрессивные веб-приложения. Для всех PWA требуется как минимум сервисный работник и манифест.
Это спецификация W3C, определяющая манифест на основе JSON (обычно с пометкой manifest.json), чтобы предоставить разработчикам централизованное место для размещения метаданных, связанных с веб-приложением, включая:
Эти метаданные имеют решающее значение для добавления приложения на главный экран или его включения в список других приложений.
iOS Safari частично реализует манифесты, в то время как большая часть метаданных PWA может быть определена с помощью специфичных для Apple расширений метатегов. Эти теги позволяют разработчикам включать полноэкранный режим, определять значки и заставки, а также указывать имя приложения.
WebAssembly позволяет запускать предварительно скомпилированный код в веб-браузере с почти нормальной скоростью. Таким образом, библиотеки, написанные на таких языках, как C, могут быть добавлены в веб-приложения. Из-за дороговизны передачи данных из JavaScript в WebAssembly в ближайшее время будут использоваться в основном вычисления (например, распознавание голоса и компьютерное зрение), а не целые приложения.
Контексты выполнения прогрессивных веб-приложений выгружаются всякий раз, когда это возможно, поэтому прогрессивные веб-приложения должны хранить большую часть долгосрочного внутреннего состояния (пользовательские данные, динамически загружаемые ресурсы приложения) в одном из следующие способы
Веб-хранилище - это стандартный API W3C, который позволяет хранить ключ-значение в современных браузерах. API состоит из двух объектов: sessionStorage (который включает хранилище только для сеанса, которое стирается после завершения сеанса браузера) и localStorage (которое включает хранилище, которое сохраняется между сеансами).
A Service worker - это web worker, который реализует программируемый сетевой прокси, который может отвечать на веб-запросы / HTTP-запросы основного документа. Он может проверять доступность удаленного сервера и кэшировать контент, когда этот сервер доступен, а затем передавать это содержимое в документ. Сервис-воркеры, как и любые другие веб-воркеры, работают отдельно от основного контекста документа. Сервисные работники могут обрабатывать push-уведомления и синхронизировать данные в фоновом режиме, кэшировать или извлекать запросы ресурсов, перехватывать сетевые запросы и получать централизованные обновления независимо от документа, который их зарегистрировал, даже если этот документ не загружен.
Сервисные работники проходят трехэтапный жизненный цикл: Регистрация, Установка и Активация . Регистрация включает в себя сообщение браузеру местоположения сервисного работника при подготовке к установке. Установка происходит, когда в браузере для веб-приложения не установлен сервисный работник или если есть обновление для сервис-воркера. Активация происходит, когда все страницы PWA закрываются, чтобы не было конфликта между предыдущей версией и обновленной. Жизненный цикл также помогает поддерживать согласованность при переключении между версиями сервис-воркера, поскольку для домена может быть активен только один сервис-воркер.
API индексированной базы данных - это стандартный API базы данных W3C доступно во всех основных браузерах. API поддерживается современными браузерами и позволяет хранить объекты JSON и любые структуры, представленные в виде строки. Индексированный API базы данных можно использовать с библиотекой-оболочкой, предоставляющей дополнительные конструкции вокруг него.
Кэш приложения (или AppCache или манифест кеша HTML5) - это более ранняя технология, которая позволяла приложению заранее кэшировать контент для последующего использования, когда устройство отключено. Он адекватно работает для одностраничных приложений, для которых он был разработан, но проблематично не работает для многостраничных приложений, таких как вики. По состоянию на май 2019 года технология поддерживается основными браузерами и годами используется некоторыми сайтами, но она уже устарела в пользу сервис-воркеров и в конечном итоге будет удалена.