Прогрессивное веб-приложение ( PWA ) или прогрессивное веб-приложение — это тип веб-приложения , которое можно установить на устройство как отдельное приложение . [1] PWA устанавливаются с использованием автономного кэша веб-браузера устройства . [2]
PWA были введены с 2016 года как альтернатива собственным (специфичным для устройства) приложениям, с тем преимуществом, что они не требуют отдельной сборки или распространения для разных платформ. Их можно использовать на различных системах, включая настольные и мобильные устройства . Публикация приложения в системах цифровой дистрибуции, таких как Apple App Store или Google Play , не является обязательной. [2]
Поскольку PWA поставляется в форме веб-страницы или веб-сайта , созданного с использованием распространенных веб-технологий, включая HTML , CSS , JavaScript и WebAssembly , [3] он может работать на любой платформе с браузером, совместимым с PWA. По состоянию на 2021 год функции PWA поддерживаются в разной степени Google Chrome , Apple Safari , Firefox для Android и Microsoft Edge [4] [5] , но не Firefox для настольных компьютеров. [6]
На Всемирной конференции разработчиков Apple в 2007 году Стив Джобс объявил, что iPhone будет «запускать приложения, созданные с использованием стандартов Интернета Web 2.0». [7] Никакого комплекта для разработки программного обеспечения (SDK) не требовалось, и приложения полностью интегрировались в устройство через движок браузера Safari . [8] Позднее эта модель была перенесена в App Store , как средство умиротворения разочарованных разработчиков. [9] В октябре 2007 года Джобс объявил, что SDK будет запущен в следующем году. [8] В результате, хотя Apple продолжала поддерживать веб-приложения, подавляющее большинство приложений iOS переместилось в App Store.
Начиная с начала 2010-х годов динамические веб-страницы позволили использовать веб-технологии для создания интерактивных веб-приложений . Адаптивный веб-дизайн и гибкость размеров экрана, которую он обеспечивает, сделали разработку PWA более доступной. Продолжающиеся улучшения HTML, CSS и JavaScript позволили веб-приложениям включать более высокие уровни интерактивности, делая возможными нативные взаимодействия на веб-сайте. [10]
В 2013 году Mozilla выпустила Firefox OS . Она была задумана как операционная система с открытым исходным кодом для запуска веб-приложений в качестве собственных приложений на мобильных устройствах. Firefox OS была основана на движке рендеринга Gecko с пользовательским интерфейсом Gaia, написанным на HTML5. Разработка Firefox OS завершилась в 2016 году, [11] и проект был полностью прекращен в 2017 году, [12] хотя форк Firefox OS использовался в качестве основы KaiOS , платформы для обычных телефонов. [13]
В 2015 году дизайнер Фрэнсис Берриман и инженер Google Chrome Алекс Рассел ввели термин «прогрессивные веб-приложения» [14] для описания приложений, использующих новые функции, поддерживаемые современными браузерами, включая service worker и манифесты веб-приложений , которые позволяют пользователям обновлять веб-приложения до прогрессивных веб-приложений в своей собственной операционной системе (ОС). Затем Google приложила значительные усилия для продвижения разработки PWA для Android. [15] [16] Firefox представил поддержку service worker в 2016 году, а Microsoft Edge и Apple Safari последовали за ними в 2018 году, [17] [15] сделав service worker доступными во всех основных системах.
К 2019 году PWA поддерживались настольными версиями большинства браузеров, включая Microsoft Edge [18] (на Windows ) и Google Chrome [19] (на Windows, macOS , ChromeOS и Linux ).
В декабре 2020 года Firefox для настольных компьютеров отказался от реализации PWA (в частности, удалил прототип конфигурации « браузер, специфичный для сайта », которая была доступна в качестве экспериментальной функции). Архитектор Firefox отметил: «Я надеюсь, что мы посылаем сигнал о том, что поддержка PWA не появится в настольном Firefox в ближайшее время». [6] Mozilla по-прежнему планирует поддерживать PWA на Android. [20]
Все прогрессивные веб-приложения разработаны для работы в любом браузере, который соответствует соответствующим веб-стандартам . Как и в случае с другими кроссплатформенными решениями, цель состоит в том, чтобы помочь разработчикам создавать кроссплатформенные приложения проще, чем с нативными приложениями. [15] Прогрессивные веб-приложения используют стратегию веб-разработки прогрессивного улучшения .
Некоторые прогрессивные веб-приложения используют архитектурный подход, называемый моделью оболочки приложения. [24] В этой модели работники служб хранят базовый пользовательский интерфейс или « оболочку » веб-приложения с адаптивным веб-дизайном в автономном кэше браузера . Эта модель позволяет PWA поддерживать использование, подобное нативному, с подключением к сети или без него. Это может улучшить время загрузки, предоставляя начальный статический фрейм , макет или архитектуру, в которую контент может загружаться как постепенно, так и динамически. [25]
Технические базовые критерии для сайта, который можно считать прогрессивным веб-приложением и, следовательно, который можно устанавливать с помощью браузеров, были описаны Расселом в 2016 году [26] и обновлены с тех пор: [27] [28]
name
или short_name
, start_url
, и display
(со значением standalone
, fullscreen
или minimal-ui
), и icons
(с версиями 192 px и 512 px). Информация, содержащаяся в манифесте, позволяет легко делиться PWA через URL, обнаруживать их поисковыми системами и облегчает сложные процедуры установки (но PWA по-прежнему будут перечислены в стороннем магазине приложений ). [30] Кроме того, PWA поддерживают собственные взаимодействия и навигацию в стиле приложений, включая добавление на домашний экран , отображение заставок и т. д.Существует множество технологий, обычно используемых для создания прогрессивных веб-приложений. Веб-приложение считается PWA, если оно удовлетворяет критериям установки, поэтому может работать в автономном режиме и может быть добавлено на домашний экран устройства. Чтобы соответствовать этому определению, все PWA требуют как минимум манифеста и сервисного работника. [31] [32] [33] Другие технологии могут использоваться для хранения данных, связи с серверами или выполнения кода.
Манифест веб-приложения [34] — это спецификация Консорциума Всемирной паутины (W3C), определяющая манифест на основе JSON (обычно называемый manifest.json) [30], который предоставляет разработчикам централизованное место для размещения метаданных , связанных с веб-приложением, включая:
Эти метаданные имеют решающее значение для добавления приложения на главный экран или иного отображения его в списке нативных приложений.
iOS Safari частично реализует манифесты, в то время как большая часть метаданных PWA может быть определена через специфичные для Apple расширения метатегов. Эти теги позволяют разработчикам включать полноэкранный режим, определять значки и заставки, а также указывать имя для приложения. [35] [36]
Service Worker — это веб-работник , реализующий программируемый сетевой прокси-сервер, который может отвечать на веб-/HTTP-запросы из основного документа. Он может проверять доступность удаленного сервера, кэшировать содержимое, когда этот сервер доступен, и позже предоставлять это содержимое документу. Service Worker, как и любые другие веб-работники, работают отдельно от контекста основного документа. Service Worker могут обрабатывать push-уведомления и синхронизировать данные в фоновом режиме, кэшировать или извлекать запросы ресурсов, перехватывать сетевые запросы и получать централизованные обновления независимо от документа, который их зарегистрировал, даже если этот документ не загружен. [37]
Service Workers проходят трехэтапный жизненный цикл: Регистрация, Установка и Активация. Регистрация включает в себя сообщение браузеру местоположения service worker при подготовке к установке. Установка происходит, когда в браузере не установлен service worker для веб-приложения или если есть обновление service worker. Активация происходит, когда все страницы PWA закрыты, так что нет конфликта между предыдущей версией и обновленной. Жизненный цикл также помогает поддерживать согласованность при переключении между версиями service worker, поскольку только один service worker может быть активен для домена. [37]
WebAssembly позволяет запускать предварительно скомпилированный код в веб-браузере со скоростью, близкой к родной. [38] Таким образом, библиотеки, написанные на таких языках, как C, можно добавлять в веб-приложения. Анонсированный в 2015 году и впервые выпущенный в марте 2017 года, WebAssembly стал рекомендацией W3C 5 декабря 2019 года [39] [40] [41] и получил премию Programming Languages Software Award от ACM SIGPLAN в 2021 году. [42]
Контексты выполнения прогрессивных веб-приложений выгружаются, когда это возможно, поэтому прогрессивным веб-приложениям необходимо хранить большую часть своего долгосрочного внутреннего состояния (пользовательские данные, динамически загружаемые ресурсы приложения) одним из следующих способов:
В 2017 году Twitter выпустил Twitter Lite, альтернативу официальным нативным приложениям Android и iOS в виде PWA . По данным Twitter, Twitter Lite потреблял всего 1–3% от размера нативных приложений. [45] Starbucks предоставляет PWA, которое на 99,84% меньше, чем его эквивалентное приложение iOS. После развертывания своего PWA Starbucks удвоил количество онлайн-заказов, причем пользователи настольных компьютеров делали заказы примерно с той же скоростью, что и пользователи мобильных приложений. [46]
Обзор 2018 года, опубликованный Forbes , показал, что пользователи Pinterest PWA проводили на сайте на 40% больше времени по сравнению с предыдущим мобильным сайтом. Ставки дохода от рекламы также выросли на 44%, а основные взаимодействия — на 60%. [47] Flipkart увидел, что 60% клиентов, которые удалили свое родное приложение, вернулись, чтобы использовать Flipkart PWA. Lancôme увидел 84%-ное сокращение времени до того, как страница станет интерактивной, что привело к 17%-ному увеличению конверсий и 53%-ному увеличению мобильных сеансов на iOS с их PWA. [48]
Поскольку PWA не требует отдельной сборки или распространения для разных платформ и доступен пользователям через Интернет, разработчикам не обязательно выпускать его через системы цифровой дистрибуции, такие как Apple App Store , Google Play , Microsoft Store или Samsung Galaxy Store . Основные магазины приложений поддерживают публикацию PWA в разной степени. [2] Google Play, Microsoft Store, [49] и Samsung Galaxy Store поддерживают PWA, но Apple App Store — нет. Microsoft Store автоматически публикует некоторые подходящие PWA (даже без запросов авторов приложений) после их обнаружения с помощью индексации Bing . [50]
Насколько мне известно, у нас нет планов по закрытию PWA на мобильных устройствах.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )