Ist das Projekt Fugu fertig?

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:

API-Name Versandt in
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Web Share Target (Ziel teilen)Chrome 71
Web Share API Level 2Chrome 75
Asynchrone Zwischenablage: Bilder lesen und schreibenChrome 76
Web Share Target Level 2Chrome 76
Schlüsselhinweis eingebenChrome 77
Speicherkontingent erweiternChrome 78
Get Install Related Apps APIChrome 80
Regelmäßige HintergrundsynchronisierungChrome 80
desktop-pwas: Anzeigemodus „minimal-ui“ unterstützenChrome 80
KomprimierungscodecsChrome 80
Contacts APIChrome 80
Badging APIChrome 81
Zulassen, dass die Badging API von einem Service Worker über Push verwendet wirdChrome 81
Barcode Detection APIChrome 83
Content Detection APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: übertragbare StreamsChrome 85
App-VerknüpfungenChrome 85
Zugriff auf das DateisystemChrome 86
Text-/HTML-Unterstützung für die asynchrone Zwischenablage APIChrome 86
Schwenk-/Neigungsunterstützung für die KameraChrome 87
FUGU Implementieren der Erfassung der Audioausgabe von Systemen und Anwendungen auf Kopfhörer und Lautsprecher Chrome 88
PointerLock unAdjustedMovementChrome 88
Eine Foto-/Videoauswahl ähnlich wie die Bildauswahl auf Android-Geräten erstellenChrome 88
Web Share (navigator.share) in Windows 10 integrierenChrome 88
Web-NFCChrome 89
WebHID (Human Interface Device)Chrome 89
Serielle Web-APIChrome 89
Web Share auf dem ComputerChrome 89
Handschrifterkennungs-APIChrome 90
Verwaltete Konfiguration für WebanwendungenChrome 91
PWA bei OS Login ausführenChrome 91
WebCodecsChrome 93
InaktivitätserkennungChrome 94
EyeDropper APIChrome 95
App-Verknüpfungsmenü für PWAs unter macOS und LinuxChrome 96
Registrierung des URL-Protokoll-Handlers für PWAs Chrome 96
WebTransportChrome 97
Zwischenablage: Beim Einfügen von Retina-Bildern gehen pHYs-Metadaten verloren.Chrome 98
Eine PWA sollte sich auf die gleiche Weise deinstallieren lassen wie eine „echte App“.Chrome 99
Web-NFC: NDEFReader makeReadOnly()Chrome 100
Mehrere Bildschirme platzierenChrome 100
HIDDevice Vergessen()Chrome 100
USBDevice Vergessen()Chrome Erste Schritte
Web-USB-SameObject-VerhaltenChrome Erste Schritte
Overlay für Fenstersteuerelemente für installierte Desktop-Web-AppsChrome Erste Schritte
DateiverarbeitungChrome Erste Schritte
Die Chrome.management API kann nicht mehr mit PWA-Apps interagieren.Chrome Erste Schritte
SerialPort Vergessen()Chrome 103
Zugriff auf lokale SchriftartenChrome 103
Fugu-Anfrage: Dynamische App-Verknüpfungen (Verknüpfungen Version 2)Chrome 104
Benutzerdefinierte Webformate für die Async Clipboard APIChrome 104
Alle bisher ausgelieferten Fugu APIs.

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.

Diagramm, das die explodierende relative Nutzung der Methode „navigator.storage.getDirectory“ zeigt.

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.