Поскольку одна из целей команды Project Fugu заключалась в том, чтобы дать разработчикам возможность делать в Интернете все, что могут делать приложения для конкретных платформ , команда была занята добавлением недостающих функций, необходимых веб-разработчикам, чтобы закрыть этот пробел в приложениях. Если вы мне не верите, просто посмотрите раздел «Отправлено» трекера API Fugu. Вот 55 выпущенных API, в порядке от наименее до последних:
Это длинный список, и у нас есть еще кое-что. В настоящее время существует несколько API и функций, находящихся на стадии пробной версии для разработчиков (то есть реализованных, но с пометкой функции), над некоторыми мы начали работать, а многие находятся на рассмотрении . Как видите, еще не время откинуться назад и сказать, что мы закончили.
Синхронные файловые методы для исходной частной файловой системы
Напротив, вместо того, чтобы объявить, что наши усилия завершены, мы на самом деле только начинаем. Например, рассмотрим диаграмму ниже, которая показывает стремительный относительный рост использования метода navigator.storage.getDirectory()
, используемого в качестве точки входа в исходную частную файловую систему (OPFS). Этот метод используется, например, для нужд высокопроизводительного хранилища Photoshop , и сообщество хранилищ очень заинтересовано в нем с момента начала прекращения поддержки Web SQL и даже раньше.
Теперь, когда все больше людей используют 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 не станут совместимыми, и мы продолжим добиваться дальнейшей стандартизации, тестирования и внедрения другими браузерами.