Eines der Ziele des Project Fugu-Teams ist es, Entwicklern zu ermöglichen, alles im Web zu tun, was plattformspezifische Apps können. Das Team hat daher fleißig fehlende Funktionen hinzugefügt, die Webentwickler benötigen, um diese App-Lücke zu schließen. Wenn Sie mir nicht glauben, sehen Sie sich einfach den Abschnitt „Versendet“ im Fugu API-Tracker an. Hier sind die 55 veröffentlichten APIs, sortiert nach dem Veröffentlichungsdatum (von der ältesten bis zur neuesten):
Das ist eine lange Liste und es gibt noch mehr zu tun. Es gibt noch einige APIs und Funktionen, die sich derzeit in der Entwicklervorschau befinden (d. h. implementiert, aber hinter einem Feature-Flag), einige, an denen wir bereits arbeiten, und viele, die in Erwägung gezogen werden. Wie Sie sehen, ist es noch nicht an der Zeit, sich zurückzulehnen und zu sagen, dass wir fertig sind.
Synchrone Dateimethoden für das private Dateisystem des Ursprungs
Ganz im Gegenteil: Wir sind noch lange nicht fertig. Das folgende Diagramm zeigt beispielsweise ein rasantes Wachstum der relativen Nutzung der Methode navigator.storage.getDirectory()
, die als Einstiegspunkt für das private Dateisystem des Ursprungs (Origin Private File System, OPFS) verwendet wird. Diese Methode wird beispielsweise für die Hochleistungsspeicheranforderungen von Photoshop verwendet, an denen die Speicher-Community seit der Einstellung von Web SQL und schon davor großes Interesse hat.
Da immer mehr Nutzer das OPFS verwenden, sind zusätzliche Anforderungen entstanden. Ein Beispiel ist die Notwendigkeit eines vollständig synchronen Satzes von Dateimethoden in einem Worker-Kontext (siehe whatwg/fs#7 für den Hintergrund). Neue Web-APIs sind in der Regel asynchron. Synchrone Methoden würden die Arbeit mit dem OPFS in einem Wasm-Kontext jedoch erheblich vereinfachen. Da dies in einem Worker geschieht, kann der Hauptthread nicht blockiert werden.
Verbesserungen beim Datenschutz für die Hardware-APIs
Ein weiteres Beispiel sind die Hardware-APIs, mit denen Sie eine Verbindung zu HID-, seriellen-, USB-, Bluetooth- und NFC-Geräten herstellen können. Einige dieser APIs gibt es schon seit einiger Zeit, aber bis vor Kurzem gab es keine Möglichkeit, ein Gerät zu vergessen, mit dem Sie zuvor eine Verbindung hergestellt hatten. Dank der forget()
-Methoden ist das jetzt für einige APIs möglich. So können Sie beispielsweise ein zuvor verbundenes serielles Gerät vergessen, was den Datenschutz der API verbessert.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Verbesserungen für die Multi-Screen Window Placement API
Ein letztes Beispiel ist die Multi-Screen Window Placement API. Hier wurden die zuvor generischen Bildschirmkennzeichnungen wie "Internal Display 1"
auf Grundlage von Entwicklerfeedback durch aussagekräftigere Kennzeichnungen wie "Built-in Retina Display"
ersetzt, damit Nutzer diese Kennzeichnungen leichter den Bildschirmen ihres Setups mit mehreren Bildschirmen zuordnen können.
Zusammenfassung
Wie Sie an diesen drei Beispielen sehen, ist Project Fugu noch lange nicht abgeschlossen. Nutzen Sie unsere APIs weiterhin oder beginnen Sie mit der Nutzung und geben Sie Feedback. Da alle Fugu-Spezifikationen öffentlich auf GitHub entwickelt werden, können Sie ein Spezifikationsproblem im entsprechenden GitHub-Repository melden oder Ihre Gedanken zu einem bestehenden Problem hinzufügen. Wenn Sie einen Fehler in der Chrome-Implementierung finden oder feststellen, dass die Implementierung von der Spezifikation abweicht, melden Sie den Fehler unter new.crbug.com. Geben Sie so viele Details wie möglich an und stellen Sie eine einfache Anleitung zur Reproduktion bereit.
Wenn Sie sich Sorgen um die Browserunterstützung machen, eignen sich viele Fugu-APIs hervorragend für progressive Verbesserungen. In meinem Artikel SVGcode: a PWA to convert raster images to SVG vector graphics finden Sie einige Beispiele. Wir sind erst zufrieden, wenn diese APIs interoperabel sind. Wir werden uns weiterhin für eine weitere Standardisierung, Tests und die Einführung durch andere Browser einsetzen.