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