Eines der Ziele des Project Fugu-Teams ist es, Entwicklern im Web alles zu ermöglichen, was sie mit plattformspezifischen Apps tun können. Das Team hat daher damit beschäftigt, fehlende Funktionen hinzuzufügen, die Webentwickler zum Schließen dieser Anwendungslücke benötigen. Wenn Sie mir nicht glauben, schauen Sie sich den Abschnitt „Shipped“ (Versendet) im Fugu API-Tracker an. Hier sind die 55 versendeten APIs, geordnet nach dem ältesten Datum zuerst:
Die Liste ist lang und wir haben noch mehr auf dem Plan. Es gibt noch einige APIs und Funktionen in der Testphase für Entwickler (d. h. implementiert, aber hinter einem Funktions-Flag), an einigen haben wir bereits gearbeitet, und viele werden in Betracht gezogen. Wie Sie sehen, ist es keine Zeit, sich zurückzulehnen und zu sagen, dass wir fertig sind.
Synchrone Dateimethoden für das private Dateisystem des Ursprungs
Ganz im Gegenteil, anstatt unsere Bemühungen als abgeschlossen zu erklären, fangen wir gerade erst an. Sehen Sie sich beispielsweise das folgende Diagramm an, das das explosive relative Nutzungswachstum der Methode navigator.storage.getDirectory()
zeigt, die als Einstiegspunkt für das private Dateisystem des Ursprungsservers (Origin Private File System, OPFS) verwendet wird. Diese Methode wird beispielsweise für den Speicherbedarf mit hoher Leistung durch Photoshop verwendet, an dem sich die Speicher-Community sehr interessiert, seit Web SQL seit der Einführung eingestellt wurde.
Da jetzt immer mehr Menschen das OPFS verwenden, haben sich zusätzliche Anforderungen ergeben. Zum Beispiel, wenn ein vollständig synchroner Satz von Dateimethoden in einem Worker-Kontext erforderlich ist. Hintergrundinformationen finden Sie unter whatwg/fs#7. Während neue Web-APIs im Allgemeinen asynchron sind, würde die Verwendung von synchronen Methoden die Arbeit mit dem OPFS in einem Wasm-Kontext viel einfacher machen. Da dies in einem Worker geschieht, kann der Hauptthread nicht blockiert werden.
Verbesserungen beim Datenschutz bei Hardware-APIs
Ein weiteres Beispiel sind die Hardware-APIs, mit denen Sie eine Verbindung zu HID-Geräten, serial, USB-, Bluetooth- und NFC-Geräten herstellen können. Einige dieser APIs gibt es zwar schon eine Weile, aber bis vor Kurzem gab es keine Möglichkeit, ein Gerät zu vergessen, mit dem Sie zuvor eine Verbindung hatten. Dafür gibt es jetzt die forget()
-Methoden für einige der APIs. Im Folgenden wird beispielsweise beschrieben, wie Sie ein zuvor verbundenes serielles Gerät entfernen, wodurch der Datenschutz der API verbessert wird.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Optimierungen für die Multi-Screen Window Placement API
Ein letztes Beispiel ist die Multi-Screen Window Placement API. Hier wurden auf Feedback von Entwicklern die zuvor allgemeinen Bildschirmlabels wie "Internal Display 1"
durch aussagekräftigere Labels wie "Built-in Retina Display"
ersetzt, damit Nutzer diese Labels den Bildschirmen ihrer Multiscreen-Einrichtung leichter zuordnen können.
Ergebnisse
Wie Sie nur an diesen drei Beispielen sehen können, ist das Projekt Fugu noch lange nicht abgeschlossen. Nutzen Sie unsere APIs weiter und senden Sie uns Feedback. Da alle Fugu-Spezifikationen offen auf GitHub entwickelt werden, können Sie ein Spezifikationsproblem im entsprechenden GitHub-Repository melden oder Ihre Gedanken zu einem vorhandenen Problem hinzufügen. Wenn Sie einen Fehler bei der Implementierung von Chrome finden oder feststellen, dass die Implementierung von der Spezifikation abweicht, melden Sie den Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich an und stellen Sie eine einfache Anleitung für die Reproduktion bereit.
Und falls Sie Bedenken hinsichtlich der Browserunterstützung haben, bieten viele Fugu-APIs eine deutliche Verbesserung. Sehen Sie sich zur Inspiration den Artikel SVGcode: a PWA to convert Raster images to SVG Vektorgrafiken an. Außerdem betrachten wir unsere Arbeit erst dann als erledigt, wenn diese APIs interoperabel sind, und wir werden weiter an der Standardisierung, Tests und der Einführung durch andere Browser arbeiten.