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

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

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

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

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

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

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

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

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

Другим примером являются аппаратные API , которые позволяют подключаться к устройствам HID , последовательному порту , 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" чтобы пользователям было легче ассоциировать эти метки с экранами их многоэкранной установки.

Выводы

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

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