Знакомство с расширенными возможностями PWA¶
Добро пожаловать на неделю 2 день 1 из серии 30 дней PWA! На этой неделе мы рассмотрим некоторые из новых интересных возможностей, доступных современным Progressive Web Apps, начиная от отправки push-уведомления и заканчивая доступом к локальному файлу в файловой системе. Однако прежде чем перейти к этому, давайте поговорим об этих новых возможностях немного шире.
В Интернете существует множество базовых API, которые используются на большинстве сайтов и позволяют реализовать различные возможности — от сайтов электронной коммерции до онлайн-игр, но некоторым сайтам требуются API, которые являются ключевыми для их работы, но могут не использоваться большинством сайтов. Например, сайт видеоконференций нуждается в доступе к камере, а IDE — в доступе к файловой системе.
Браузеры и органы стандартизации с самого начала своего существования в основном концентрировались на добавлении API и возможностей, которые приносили пользу всему Интернету, и меньше внимания уделяли периферийным API, необходимым лишь нескольким сайтам. Кроме того, некоторые из этих возможностей сложно добавить в платформу, поскольку они являются мощными в том смысле, что злоупотребление ими может привести к серьезным последствиям.
Если мы хотим, чтобы веб действительно преуспел в качестве платформы для разработки приложений, разработчикам потребуется доступ к большинству тех же возможностей, которые доступны разработчикам приложений для конкретных платформ.
Дифференциация¶
Хорошая новость заключается в том, что ситуация быстро меняется: компании-производители браузеров уделяют особое внимание удовлетворению потребностей разработчиков и обеспечению того, чтобы в Интернете можно было реализовать всевозможные возможности, как и в приложениях для конкретных платформ, но в гораздо более безопасной форме и с сохранением конфиденциальности.
Участники проекта Chromium, на котором основаны такие браузеры, как Google Chrome, Microsoft Edge и другие, сотрудничают в рамках проекта Project Fugu, чтобы добавить эти мощные возможности в веб. Это привело к тому, что в сотрудничестве с разработчиками приложений было стандартизировано множество новых API.
Веб-приложения обладают многими основными свойствами, которых лишены приложения для конкретных платформ, например, основаны на стандартах и работают в различных форм-факторах. Кроме того, веб-приложения не нужно устанавливать, к ним можно получить мгновенный доступ. Кроме того, благодаря тому, что они основаны на URL-адресах, обмениваться приложениями так же просто, как и ссылкой на интересный твит.
Проект "Фугу" призван перенести в веб все лучшее, что есть в приложениях для конкретных платформ, сохранив при этом их преимущества.
Вот сжатый обзор некоторых из новых возможностей, которые можно найти на Fugu API Tracker:
- Файлы и протоколы
- Обработчик протокола URL
- Доступ к файловой системе (локальная файловая система)
- Частная файловая система Origin
- Расширенная квота хранения
- Доступ к устройствам
- USB
- Bluetooth
- NFC
- Устройство человеческого интерфейса, HID (USB)
- Последовательный порт (USB)
- Потоковая передача и видеоконференции
- Поддержка камеры с панорамированием, наклоном и зумом
- WebCodec
- Потоки (в т.ч. передаваемые)
- Сжатие потоков
- Поддержка рабочего стола
- Запуск PWA при входе в систему
- Обмен и получение общих данных и файлов (Web Share)
- Обнаружение простоя
- Меню быстрого доступа
- Значки уведомлений
- Асинхронный буфер обмена с поддержкой изображений и Ctrl+V
Благодаря перечисленным выше новым возможностям можно создавать множество продвинутых приложений, работающих прямо в браузере. Примером может служить недавно запущенный Microsoft Visual Studio Code PWA, доступ к которому можно получить прямо с сайта vscode.dev. Еще несколько лет назад создать такое полнофункциональное веб-приложение было бы невозможно из-за отсутствия доступа к локальной файловой системе. Но благодаря дополнительной поддержке PWA Visual Studio Code можно установить прямо с сайта и работать в автономном режиме, что позволяет продолжать кодить даже во время путешествия на самолете.
Кроме того, в нужный момент пользователю выдаются два запроса на разрешение, благодаря которым он понимает, к чему предоставляет доступ. Один раз — при попытке открыть локальный файл или каталог, и второй раз — при внесении изменений в файлы. Это гораздо более безопасный подход, чем тот, который мы используем для приложений, ориентированных на конкретную платформу, поскольку доступ к файловой системе ограничивается каталогом, к которому приложение получило доступ (и его подкаталогами), и ничем больше. Помимо этого, в Интернете уже реализовано множество технологий и идей, направленных на защиту от атак, таких как sandboxing.
Принятие¶
Новые веб-интерфейсы стандартизируются открыто в одной из организаций, занимающихся стандартизацией веб-платформы, таких как W3C, WHATWG, IETF или ECMA TC39, и функции "Project Fugu" не являются исключением.
Проект "Фугу" — это совместная работа компаний Microsoft, Google, Intel и других. При этом большое внимание уделяется привлечению партнеров для обеспечения высокого качества API и решения реальных задач разработчиков. Это означает, что как минимум один партнерский сайт будет активно участвовать в предоставлении конструктивной обратной связи с планом развертывания функции.
Потребности пользователей и примеры использования описываются в документе "объяснитель", который распространяется среди заинтересованных сторон, таких как веб-сообщество, команды безопасности и т.п. Объяснительный документ служит основой для раннего анализа и изучения. В конечном итоге, после многих итераций, функция дорабатывается, и мы получаем проект спецификации и реализацию, которая может быть протестирована разработчиками и часто развернута через Origin Trial.
Если все сложится удачно, то функция, скорее всего, будет поставляться в браузерах, но ее внешний вид может сильно отличаться от первоначально задуманного.
Упражнение¶
Проверьте, какие функции поддерживает ваш браузер, и поиграйте с ними на сайте https://whatpwacando.today/.
Если вам нужно, чтобы веб делал что-то, что сегодня невозможно, вы можете подать предложение в Project Fugu.
Резюме¶
Веб-платформа нуждается в широком наборе API-интерфейсов для работы с самыми разными приложениями. API, который может показаться нишевым, может стать той недостающей частью, которая откроет определенный набор возможностей, превратив веб в полноценную среду разработки приложений.
Предоставление доступа к определенным возможностям платформы и аппаратного обеспечения может оказаться непростой задачей, учитывая потенциальные последствия для безопасности и конфиденциальности, но веб хорошо подготовлен к решению этой проблемы благодаря тому, что в процессе стандартизации и поставки большое внимание уделяется безопасности и конфиденциальности.
За последние пару лет в рамках проекта "Project Fugu" в веб-платформу было внедрено множество дополнительных функций и API, что позволило создать на ее основе совершенно новый класс приложений, о которых и пойдет речь в материале этой недели.
Настройтесь на завтрашний выпуск следующего поста в серии, где мы рассмотрим ярлыки приложений.
Ресурсы¶
- https://fugu-tracker.web.app/
- https://web.dev/browser-sandbox/
- https://tag.w3.org/explainers/
- https://developer.chrome.com/blog/origin-trials/
- https://web.dev/fugu-status/
- https://web.dev/fugu-status/#suggest-new
- https://www.chromium.org/teams/web-capabilities-fugu/
- https://www.w3.org/2019/Talks/TPAC/tpac_pwa+fugu.pdf