Проект Фугу «завершен»?

Поскольку одной из целей команды Project Fugu было сделать так, чтобы разработчики могли делать в Интернете все, что могут делать приложения, зависящие от платформы , команда была занята добавлением недостающих функций, необходимых веб-разработчикам для закрытия этого пробела в приложениях. Если вы мне не верите, просто посмотрите на раздел «Отправлено» в трекере API Fugu. Вот 55 отправленных API, в порядке от наименее до наиболее недавно отправленных:

Имя API Отправлено в
Веб-API Bluetooth Хром 56
API-интерфейс WebUSB Хром 61
Веб-целевой обмен Хром 71
API веб-обмена, уровень 2 Хром 75
Асинхронный буфер обмена: чтение и запись изображений Хром 76
Уровень 2 целевого показателя общего доступа к веб-ресурсам Хром 76
Введите ключевую подсказку Хром 77
Расширить квоту хранения Хром 78
Получить установленные связанные приложения API Хром 80
Периодическая фоновая синхронизация Хром 80
desktop-pwas: Поддержка режима отображения «минимальный-пользовательский интерфейс» Хром 80
Кодеки сжатия Хром 80
Контакты API Хром 80
API для создания значков Хром 81
Разрешить использование API Badging из Service Worker через Push Хром 81
API обнаружения штрих-кода Хром 83
API индексации контента Хром 84
WebOTP Хром 84
API блокировки пробуждения экрана Хром 84
API потоков: передаваемые потоки Хром 85
Ярлыки приложений Хром 85
Доступ к файловой системе Хром 86
поддержка text/html для асинхронного буфера обмена API Хром 86
Поддержка панорамирования/наклона камеры Хром 87
FUGU Реализовать захват системного и прикладного аудиовыхода на наушники и динамики Хром 88
PointerLock нерегулируемыйДвижение Хром 88
Создайте средство выбора фотографий/видео, похожее на средство выбора фотографий на Android Хром 88
Интеграция Web Share (navigator.share) с Windows 10 Хром 88
Веб-NFC Хром 89
WebHID (устройство интерфейса пользователя) Хром 89
Веб-последовательный API Хром 89
Веб-общение на рабочем столе Хром 89
API распознавания рукописного ввода Хром 90
Управляемая конфигурация для веб-приложений Хром 91
Запуск PWA при входе в ОС Хром 91
Веб-кодеки Хром 93
Обнаружение простоя Хром 94
API-интерфейс EyeDropper Хром 95
Меню ярлыков приложений для PWA на macOS и Linux Хром 96
Регистрация обработчика протокола URL для PWA Хром 96
Веб-Транспорт Хром 97
Буфер обмена: при вставке изображений Retina теряются метаданные pHY. Хром 98
PWA должно иметь возможность быть удалено так же, как и «настоящее приложение» Хром 99
Веб-NFC: NDEFReader makeReadOnly() Хром 100
Размещение окон на нескольких экранах Хром 100
HID-устройство забыло() Хром 100
USBDevice забыть() Хром 101
Поведение Web USB sameObject Хром 101
Наложение элементов управления окнами для установленных веб-приложений для настольных компьютеров Хром 102
Обработка файлов Хром 102
API chrome.management больше не может взаимодействовать с приложениями PWA Хром 102
SerialPort забыть() Хром 103
Доступ к локальному шрифту Хром 103
Запрос Fugu: Динамические ярлыки приложений (Shortcuts v2) Хром 104
Пользовательские веб-форматы для API асинхронного буфера обмена Хром 104
Все API Fugu отправлены на данный момент.

Это длинный список, и у нас есть еще кое-что на примете. В настоящее время еще несколько API и функций находятся в стадии тестирования разработчиками (то есть реализованы, но с пометкой функции), некоторые из них мы уже начали разрабатывать, а многие находятся на рассмотрении . Как видите, еще не время расслабляться и говорить, что мы закончили.

Синхронные файловые методы для исходной частной файловой системы

Совсем наоборот, вместо того, чтобы объявить о завершении наших усилий, мы на самом деле только начинаем. Например, рассмотрим диаграмму ниже, которая показывает стремительный рост относительного использования метода navigator.storage.getDirectory() , используемого в качестве точки входа в исходную частную файловую систему (OPFS). Этот метод используется, например, для высокопроизводительного хранилища Photoshop , и сообщество хранилищ очень заинтересовано в нем с начала устаревания Web SQL и даже раньше.

Диаграмма, показывающая стремительный рост относительного использования метода navigator.storage.getDirectory.

Теперь, когда все больше людей используют OPFS, появились дополнительные требования. Например, потребность в полностью синхронном наборе методов файлов в контексте рабочего процесса (см. whatwg/fs#7 для справки). Хотя новые веб-API, как правило, асинхронны, наличие синхронных методов значительно упростило бы работу с OPFS в контексте Wasm, и поскольку это происходит в рабочем процессе, основной поток не может быть заблокирован.

Улучшения конфиденциальности для аппаратных API

Другим примером являются аппаратные API , которые позволяют вам подключаться к устройствам HID , serial , USB , Bluetooth и NFC . Хотя некоторые из этих API существуют уже некоторое время, до недавнего времени не было способа забыть устройство, к которому вы ранее подключались. Теперь это возможно благодаря методам forget() для некоторых API. Например, вот как забыть ранее подключенное последовательное устройство, что повышает конфиденциальность API.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Усовершенствования API размещения окон на нескольких экранах

Последним примером является API размещения окон на нескольких экранах , где на основе отзывов разработчиков ранее общие метки экранов, такие как "Internal Display 1" были заменены более содержательными метками, такими как "Built-in Retina Display" чтобы пользователи могли легче связывать эти метки с экранами своей многоэкранной конфигурации.

Выводы

Как вы можете видеть из этих трех примеров, проект Fugu далек от завершения. Продолжайте или начните использовать наши API и отправляйте отзывы. Поскольку все спецификации Fugu разрабатываются открыто на GitHub, вы можете подать заявку на спецификацию в соответствующем репозитории GitHub или добавить свои мысли к существующей проблеме. Если вы нашли ошибку в реализации Chrome или обнаружили, что реализация отличается от спецификации, то отправьте заявку на new.crbug.com . Обязательно включите как можно больше подробностей и предоставьте простые инструкции по воспроизведению.

И, если вас беспокоит поддержка браузера, многие API Fugu делают большие прогрессивные улучшения. См. мою статью SVGcode: PWA для преобразования растровых изображений в векторную графику SVG для вдохновения. Мы также не считаем свою работу выполненной, пока эти API не станут совместимыми, и мы продолжим настаивать на дальнейшей стандартизации, тестировании и принятии другими браузерами.