WikiDer > Прогрессивное веб-приложение

Progressive web application
Логотип PWA

А прогрессивное веб-приложение (PWA) является разновидностью программное обеспечение доставлено через сеть, созданный с использованием распространенных веб-технологий, включая HTML, CSS и JavaScript. Он предназначен для работы на любой платформе, использующей соответствующий стандартам браузер, включая оба рабочий стол и мобильные устройства.

Хотя веб-приложения были доступны для мобильных устройств с самого начала, они, как правило, были медленнее, имели меньше функций и меньше использовались, чем собственные приложения. Функции PWA позволяют сократить разрыв с собственными приложениями и создать аналогичный пользовательский интерфейс. Особенности включают

  • Работать в оффлайне
  • Высокая производительность
  • Фоновая обработка в сервис-воркерах в отдельном потоке
  • Доступ к сенсорам телефона
  • Поддержка push-уведомлений
  • Значок на главном экране телефона

Поскольку прогрессивное веб-приложение является разновидностью страница в Интернете или же интернет сайт известный как веб приложение, они не требуют отдельной комплектации или распространения. В частности, разработчики или пользователи не обязаны устанавливать веб-приложения через системы цифрового распространения, такие как Apple App Store или же Гугл игры. Однако для многих поставщиков PWA отсутствие видимости PWA в этих системах распространения является недостатком по сравнению с собственными приложениями. В той или иной степени основные магазины приложений начали использовать PWA, что позволило их найти в магазинах приложений. [1]

По состоянию на апрель 2018 года функции PWA в той или иной степени поддерживаются Mozilla Firefox, Гугл Хром, Apple Safari, и Microsoft Edge браузеры, но другие браузеры могут поддерживать функции, которые потребуются в будущем.[2][3] Некоторые компании отмечают значительные улучшения[4] в самых разных ключевые показатели эффективности после внедрения PWA, например увеличение времени, проведенного на странице, конверсий или дохода.

Фон

При запуске iPhone в 2007, Стив Джобс объявила, что веб-приложения, разработанные в HTML5 с помощью AJAX архитектура, будет стандартным форматом для приложений iPhone. Нет комплект для разработки программного обеспечения (SDK), и приложения будут полностью интегрированы в устройство через Сафари движок браузера.[5] Позже эта модель была заменена на App Store в качестве средства предотвращения взломщики и успокоить разочарованных разработчиков.[6] В октябре 2007 года Джобс объявил, что SDK будет запущен в следующем году.[5] В результате, хотя Apple продолжала поддерживать веб-приложения, подавляющее большинство приложений iOS переместилось в App Store.

С начала 2010-х гг. динамические веб-страницы разрешили использовать веб-технологии для создания интерактивных веб-приложения. Адаптивный веб-дизайни гибкость размера экрана, которую он обеспечивает, сделали разработку PWA более доступной. Постоянные усовершенствования HTML, CSS и JavaScript позволили веб-приложениям включать более высокий уровень интерактивности, делая возможными нативные возможности на веб-сайте и, следовательно, на PWA.[7]

Firefox выпущен ОС Firefox в 2013 году. Предполагалось, что это будет Открытый исходный код Операционная система для запуска веб-приложений в качестве собственных приложений на мобильных устройствах с Gaia, созданным в качестве интерфейса HTML5. Разработка Firefox OS завершилась в 2016 году.

В 2015 году дизайнер Фрэнсис Берриман и Гугл Хром инженер Алекс Рассел ввел термин «прогрессивные веб-приложения».[8] для описания приложений, использующих новые функции, поддерживаемые современными браузерами, включая работники сферы обслуживания и манифесты веб-приложений, которые позволяют пользователям обновлять веб-приложения до прогрессивных веб-приложений на их родной Операционная система (ОПЕРАЦИОННЫЕ СИСТЕМЫ). Затем Google приложил значительные усилия для продвижения разработки PWA для Android.[9][10] С введением Apple в 2017 году поддержки сервис-воркеров для Safari,[9] PWA теперь поддерживаются в двух наиболее часто используемых мобильных операционных системах: Android и iOS.

К 2019 году PWA были доступны в настольных браузерах. Microsoft Edge[11] (на Windows) и Гугл Хром[12] (в Windows, macOS, Chrome OS и Linux).

Характеристики

Прогрессивные веб-приложения предназначены для работы в любом браузере, поддерживающем соответствующие веб-стандарты. Как и в случае с другими кросс-платформенными решениями, цель состоит в том, чтобы помочь разработчикам создавать кроссплатформенные приложения более легко, чем с собственными приложениями.[9]По словам разработчиков Google,[8][13][14] Характеристики PWA:

  • Прогрессивный - Работает для каждого пользователя, независимо от выбора браузера, использующего прогрессивное улучшение принципы.
  • Отзывчивый - Подходит для любого форм-фактора: настольный компьютер, мобильный телефон, планшет или формы, которые еще не появились.
  • Быстрее после начальной загрузки - После завершения начальной загрузки один и тот же контент и элементы страницы не нужно повторно загружать каждый раз.
  • Независимость от подключенияСервисные работники разрешить автономное использование или в сетях низкого качества.
  • Как приложение - Похоже на приложение для пользователя с взаимодействием и навигацией в стиле приложения.
  • Свежий - Всегда в актуальном состоянии благодаря процессу обновления сервис-воркера.
  • Безопасный - Подается через HTTPS чтобы предотвратить слежку и убедиться, что контент не был подделан.
  • Обнаруживаемый - Определяется как «приложение» в manifest.json.[15] и регистрация сервисного работника и возможность обнаружения поисковыми системами.
  • Повторное вовлечение - Возможность использования всплывающее уведомление для поддержания взаимодействия с пользователем.
  • Устанавливаемый - Предоставляет значки на главном экране без использования App Store.
  • Возможность связывания - Можно легко поделиться через URL-адрес и не требует сложной установки.

Технические базовые критерии для того, чтобы сайт считался прогрессивным веб-приложением браузерами, были описаны Расселом в следующем посте:[16]

  • Происходят из безопасного источника. Обслуживается с использованием TLS и зеленых замков (нет активного смешанного содержимого).
  • Загружать в автономном режиме (даже если только настраиваемая офлайн-страница). Подразумевается, что прогрессивным веб-приложениям требуются работники службы.
  • Ссылка на манифест веб-приложения с как минимум четырьмя ключевыми свойствами: name, short_name, start_url и display (со значением standalone или fullscreen)
  • Иконка размером не менее 144 × 144 в формате PNG.
  • Использование векторная графика которые неограниченно масштабируются и требуют меньшего размера файлов.

Некоторые прогрессивные веб-приложения используют архитектурный подход, называемый моделью оболочки приложения.[17] В этой модели сервис-воркеры хранят базовый пользовательский интерфейс или "ракушка" из адаптивный веб-дизайн веб-приложение в браузере офлайн тайник. Эта модель позволяет PWA поддерживать нативное использование с подключением к Интернету или без него. Это может сократить время загрузки, предоставив начальный статический кадр, макет или архитектура, в которые контент можно загружать как прогрессивно, так и динамически.[18]

Технологии

Существует множество широко используемых технологий для создания прогрессивных веб-приложений. Для всех PWA требуется как минимум сервисный работник и манифест.[19][20][21]

Манифест

В манифест веб-приложения[22] это W3C спецификация, определяющая JSONна основе манифеста (обычно обозначается manifest.json)[15] предоставить разработчикам централизованное место для размещения метаданные связанный с веб-приложением, включая:

  • Название веб-приложения
  • Ссылки на значки веб-приложений или объекты изображений
  • Предпочтительный URL-адрес для запуска или открытия веб-приложения
  • Данные конфигурации веб-приложения
  • Ориентация веб-приложения по умолчанию
  • Возможность установить режим отображения, например полноэкранный

Эти метаданные имеют решающее значение для добавления приложения на главный экран или для другого перечисления рядом с собственными приложениями.

поддержка iOS

iOS Safari частично реализует манифесты, в то время как большая часть метаданных PWA может быть определена с помощью специфичных для Apple расширений метатегов. Эти теги позволяют разработчикам включать полноэкранный режим, определять значки и заставки, а также указывать имя для приложения.[23][24]

WebAssembly

WebAssembly позволяет предварительно скомпилированный код для запуска в веб-браузере с почти нативной скоростью.[25] Таким образом, библиотеки, написанные на таких языках, как C могут быть добавлены в веб-приложения. Из-за стоимости передачи данных из JavaScript в WebAssembly, в ближайшем будущем будут использоваться в основном вычисления (например, распознавание голоса и компьютерное зрение), а не целые приложения.

Хранилище данных

Контексты выполнения прогрессивных веб-приложений выгружаются, когда это возможно, поэтому прогрессивные веб-приложения должны хранить большую часть долгосрочного внутреннего состояния (пользовательские данные, динамически загружаемые ресурсы приложения) одним из следующих способов

Веб-хранилище

Веб-хранилище - это стандартный API W3C, который позволяет хранить ключ-значение в современных браузерах. API состоит из двух объектов: sessionStorage (который включает хранилище только для сеанса, которое стирается после завершения сеанса браузера) и localStorage (которое обеспечивает хранение, которое сохраняется между сеансами).[26]

Сервисные работники

Сервисный работник - это веб-работник который реализует программируемый сетевой прокси, который может отвечать на веб / HTTP-запросы основного документа. Он может проверять доступность удаленного сервера и кэшировать контент, когда этот сервер доступен, а затем передавать это содержимое в документ. Сервис-воркеры, как и любые другие веб-воркеры, работают отдельно от основного контекста документа. Сервисные работники могут справиться всплывающее уведомление и синхронизировать данные в фоновом режиме, кэшировать или получать запросы ресурсов, перехватывать сетевые запросы и получать централизованные обновления независимо от документа, который их зарегистрировал, даже если этот документ не загружен.[27]

Сервисные работники проходят трехэтапный жизненный цикл: Постановка на учет, Установка и Активация. Регистрация включает в себя сообщение браузеру местоположения сервисного работника при подготовке к установке. Установка происходит, когда в браузере для веб-приложения не установлен сервисный работник, или если для сервис-воркера есть обновление. Активация происходит, когда все страницы PWA закрываются, чтобы не было конфликта между предыдущей версией и обновленной. Жизненный цикл также помогает поддерживать согласованность при переключении между версиями сервис-воркера, поскольку только один сервис-воркер может быть активным для домена.[27]

Индексированная база данных API

Indexed Database API - это стандартный API базы данных W3C, доступный во всех основных браузерах. API поддерживается современными браузерами и позволяет хранить JSON объекты и любые структуры, представленные в виде строки.[28] Индексированный API базы данных можно использовать с библиотекой-оболочкой, предоставляющей дополнительные конструкции вокруг него.

AppCache (устарело)

Кэш приложения (или AppCache, или манифест кеша HTML5) - это более ранняя технология, которая позволяла приложению заранее кэшировать контент для последующего использования, когда устройство отключено.[29] Работает адекватно для одностраничные приложения для чего он был разработан, но проблематично не работает для многостраничных приложений, таких как вики.[30] По состоянию на май 2019 года технология поддерживается основными браузерами и годами используется некоторыми сайтами, но она уже устарела в пользу сервис-воркеров и в конечном итоге будет удалена.

Смотрите также

Рекомендации

  1. ^ "Прогрессивные веб-приложения | Software AG". techradar.softwareag.com. Получено 2020-09-25.
  2. ^ "Могу я использовать pwa?". Могу ли я использовать. Получено 14 августа 2018.
  3. ^ "Сервисный работник готов?". Джейк Арчибальд.
  4. ^ Ржуткевич, Джейсон. «Почему прогрессивные веб-приложения - это будущее мобильного Интернета (исследование 2019 г.)». YML. Получено 4 октября 2019.
  5. ^ а б Ричи, Рене (5 марта 2018 г.). «Нулевой год в App Store: несладкие веб-приложения заставили iPhone перейти на SDK». Я больше. Получено 23 мая 2019.
  6. ^ «Исходное видение Джобса для iPhone: никаких сторонних приложений». 9to5Mac. 21 октября 2011 г.. Получено 22 мая 2019.
  7. ^ Маркотт, Итан. «Адаптивный веб-дизайн». Список отдельно. Получено 25 мая, 2010.
  8. ^ а б Рассел, Алекс. «Прогрессивные веб-приложения: избегая вкладок, не теряя души». Получено 15 июня, 2015.
  9. ^ а б c Эванс, Джонни (26 января 2018 г.). «Apple возвращается в будущее с веб-приложениями». Computerworld. Получено 23 мая 2019.
  10. ^ Ladage, Аарон (17 апреля 2018 г.). «Прогрессивные веб-приложения уже здесь, и они меняют все». DEG. Получено 23 мая 2019.
  11. ^ Пфлуг, Кайл (6 февраля 2018 г.). «Приветствуем прогрессивные веб-приложения в Microsoft Edge и Windows 10». Блоги Microsoft Windows. Получено 13 сентября 2019.
  12. ^ Лепаж, Пит (4 июня 2019 г.). «Прогрессивные веб-приложения для настольных компьютеров». Разработчики Google. Получено 13 сентября 2019.
  13. ^ "Ваше первое прогрессивное веб-приложение | Основы Интернета - разработчики Google". Ваше первое прогрессивное веб-приложение | Основы Интернета - разработчики Google. Получено 2016-07-17.
  14. ^ Разработчики Google. «Прогрессивное веб-приложение». Получено 15 июня, 2015.
  15. ^ а б W3C «Манифест веб-приложения», рабочий проект, дата обращения 12 сентября 2016
  16. ^ Рассел, Алекс. «Что именно делает прогрессивное веб-приложение». Получено 18 октября, 2016.
  17. ^ «Модель оболочки приложения».
  18. ^ Османи, Адди. «Модель оболочки приложения | Основы Интернета». Разработчики Google. Получено 23 мая 2019.
  19. ^ "Обнаруживаемый". Сеть разработчиков Mozilla. Получено 2017-04-24.
  20. ^ "Независимая от сети". Сеть разработчиков Mozilla. Получено 2017-04-24.
  21. ^ «Мгновенная загрузка веб-приложений с архитектурой оболочки приложения». Разработчики Google. Получено 2017-04-24.
  22. ^ "Документы веб-манифеста на MDN". Веб-документы MDN.
  23. ^ «Что нового в iOS 12.2 для прогрессивных веб-приложений». Середина. 27 марта 2019.
  24. ^ «Настройка веб-приложений». Руководство по веб-контенту Safari.
  25. ^ «Концепции WebAssembly». MDN. Получено 14 августа 2018.
  26. ^ «API веб-хранилища». MDN. Получено 14 августа 2018.
  27. ^ а б "Введение в Service Worker | Web". Разработчики Google. 1 мая 2019. Получено 23 мая 2019.
  28. ^ «Концепции, лежащие в основе IndexedDB». MDN. Получено 14 августа 2018.
  29. ^ «Использование кеша приложения». MDN. Mozilla. Получено 14 августа 2018.
  30. ^ "Кэш приложения - это тупица". Список отдельно. Получено 14 августа 2018.