Перейти к содержанию

Знакомство с расширенными возможностями 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, что позволило создать на ее основе совершенно новый класс приложений, о которых и пойдет речь в материале этой недели.

Настройтесь на завтрашний выпуск следующего поста в серии, где мы рассмотрим ярлыки приложений.

Ресурсы

Комментарии