Eines der Ziele des Project Fugu-Teams besteht darin, Entwicklern die Möglichkeit zu geben, im Web alles zu tun, was mit platformspezifischen Apps möglich ist. Das Team hat daher eifrig daran gearbeitet, fehlende Funktionen hinzuzufügen, die Webentwickler benötigen, um diese Lücke zu schließen. Wenn Sie mir nicht glauben, sehen Sie sich einfach den Bereich Versandt im Fugu API-Tracker an. Hier sind die 55 versendeten APIs in der Reihenfolge vom am wenigsten zum am häufigsten versendeten:
Die Liste ist lang und wir haben noch viel vor. Es gibt noch einige APIs und Funktionen, die sich derzeit in der Testphase für Entwickler befinden (d. h. sie sind implementiert, aber durch eine Feature-Flag geschützt). Einige davon sind bereits in der Entwicklung, und viele werden derzeit geprüft. 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: Anstatt unsere Bemühungen als abgeschlossen zu erklären, stehen wir erst am Anfang. Im folgenden Diagramm ist beispielsweise das sehr starke relative Nutzungswachstum der Methode navigator.storage.getDirectory()
zu sehen, die als Einstiegspunkt in das Origin Private File System (OPFS) verwendet wird. Diese Methode wird beispielsweise für die Anforderungen an den Hochleistungsspeicher von Photoshop verwendet und ist seit der Einstellung von Web SQL und sogar davor für die Speicher-Community von großem Interesse.
Da immer mehr Nutzer die OPFS nutzen, sind zusätzliche Anforderungen entstanden. Beispielsweise ist für einen Worker-Kontext ein vollständig synchroner Satz von Dateimethoden erforderlich (whatwg/fs#7). Neue Web-APIs sind zwar in der Regel asynchron, aber synchrone Methoden würden die Arbeit mit der OPFS in einem Wasm-Kontext viel einfacher machen. Da dies in einem Worker geschieht, kann der Hauptthread nicht blockiert werden.
Datenschutzverbesserungen 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 länger, aber bis vor Kurzem gab es keine Möglichkeit, ein Gerät zu entfernen, 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 entfernen, um die Datensicherheit der API zu verbessern.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Verbesserungen an der Window Placement API für mehrere Bildschirme
Ein letztes Beispiel ist die Window Placement API (Stabile Version) für mehrere Bildschirme. Auf Grundlage von Entwicklerfeedback wurden die zuvor generischen Bildschirmlabels wie "Internal Display 1"
durch aussagekräftigere Labels wie "Built-in Retina Display"
ersetzt, damit Nutzer diese Labels leichter mit den Bildschirmen ihrer Multi-Screen-Umgebung verknüpfen können.
Schlussfolgerungen
Wie Sie an diesen drei Beispielen sehen können, ist Project Fugu noch lange nicht fertig. Verwenden Sie unsere APIs weiter oder beginnen Sie damit und senden Sie uns Feedback. Da alle Fugu-Spezifikationen offen auf GitHub entwickelt werden, können Sie ein Problem mit der Spezifikation im entsprechenden GitHub-Repository melden oder Ihre Meinung zu einem vorhandenen 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 dabei so viele Details wie möglich an und machen Sie eine einfache Anleitung zur Reproduktion.
Und wenn Sie Bedenken hinsichtlich der Browserunterstützung haben, bieten viele Fugu APIs hervorragende progressive Verbesserungen. Weitere Informationen finden Sie in meinem Artikel SVGcode: eine PWA zum Konvertieren von Rasterbildern in SVG-Vektorgrafiken. Wir sind erst zufrieden, wenn diese APIs interoperabel sind. Wir werden daher auch weiterhin für eine weitere Standardisierung, Tests und die Einführung in anderen Browsern werben.