Project Fugu 团队的目标之一是让开发者能够在 Web 上执行平台专用应用可以执行的任何操作,因此该团队一直在忙于添加 Web 开发者需要的缺失功能,以缩小与平台专用应用之间的差距。如果您不相信,请查看 Fugu API 跟踪器的“已发货”部分。以下是 55 个已发布的 API,按发布时间从早到晚排序:
我们还有许多工作要做。目前,仍有几个 API 和功能处于开发者试用阶段(即已实现,但处于功能标志后面),有些功能我们已开始开发,还有许多功能正在考虑。如您所见,我们还没有完成。
源私有文件系统的同步文件方法
恰恰相反,我们实际上才刚刚开始,而不是宣布我们的努力已完成。例如,请参考下图,其中显示了用作来源私有文件系统 (OPFS) 入口点的 navigator.storage.getDirectory()
方法的相对使用量激增。例如,此方法可用于满足 Photoshop 的高性能存储需求,自 Web SQL 开始弃用以来,甚至在此之前,存储社区就对此非常感兴趣。
现在,越来越多的人使用 OPFS,因此出现了额外的要求。例如,在 worker 上下文中需要一组完全同步的文件方法(如需了解背景信息,请参阅 whatwg/fs#7)。虽然新的 Web API 通常是异步的,但拥有同步方法会让在 Wasm 上下文中使用 OPFS 变得更加简单,而且由于这在工作器中进行,因此主线程不会被阻塞。
改进了硬件 API 的隐私保护功能
另一个例子是硬件 API,可让您连接到 HID、串行、USB、蓝牙和 NFC 设备。虽然其中一些 API 已经存在了一段时间,但直到最近,我们还无法忘记之前连接过的设备。现在,借助部分 API 的 forget()
方法,您可以轻松实现此目的。例如,以下是如何忘记之前连接的串行设备,这有助于提高 API 的隐私性。
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
对 Multi-Screen Window Placement API 的优化
最后一个示例是 Multi-Screen Window Placement API,其中根据开发者反馈,之前的通用屏幕标签(例如 "Internal Display 1"
)已替换为更有意义的标签(例如 "Built-in Retina Display"
),以便用户更轻松地将这些标签与其多屏幕设置的屏幕相关联。
总结
从这三个示例中,您可以看到 Project Fugu 远未完成。继续或开始使用我们的 API 并发送反馈。由于所有 Fugu 规范都是在 GitHub 上公开开发的,因此您可以在相应的 GitHub 代码库中提交规范问题,或在现有问题中添加您的想法。如果您发现 Chrome 实现存在 bug,或者发现实现与规范不符,请访问 new.crbug.com 提交 bug。请务必提供尽可能多的详细信息,并提供简单的再现说明。
如果您担心浏览器支持问题,许多 Fugu API 都能带来出色的渐进式增强功能。如需获取灵感,请参阅我的文章 SVGcode:用于将光栅图片转换为 SVG 矢量图形的 PWA。只有当这些 API 实现互操作性后,我们才会认为自己的工作已完成,我们将继续推动进一步的标准化、测试和其他浏览器的采用。