Is Project Fugu ‘klaar’?

Een van de doelstellingen van het Project Fugu-team is om ontwikkelaars alles op het web mogelijk te maken wat platformspecifieke apps ook kunnen . Het team is druk bezig geweest met het toevoegen van ontbrekende functies die webontwikkelaars nodig hadden om deze app-kloof te dichten. Als je me niet gelooft, kijk dan eens naar de sectie 'Verzonden' van de Fugu API-tracker. Hier zijn de 55 verzonden API's, in volgorde van minst recent naar meest recent verzonden:

API-naam Verzonden in
Web Bluetooth API Chroom 56
WebUSB API Chroom 61
Web Share Target Chroom 71
Web Share API Niveau 2 Chroom 75
Async-klembord: afbeeldingen lezen en schrijven Chroom 76
Web Share Doelniveau 2 Chroom 76
Voer sleutelhint in Chroom 77
Opslagquota uitbreiden Chroom 78
API voor geïnstalleerde gerelateerde apps Chroom 80
Periodieke achtergrondsynchronisatie Chroom 80
desktop-pwas: Ondersteuning voor de weergavemodus "minimal-ui" Chroom 80
Compressiecodecs Chroom 80
Contacten API Chroom 80
Badgerings-API Chroom 81
Sta toe dat de Badging API door een service worker via Push gebruikt kan worden Chroom 81
Barcodedetectie-API Chroom 83
API voor inhoudsindexering Chroom 84
WebOTP Chroom 84
Scherm Wake Lock API Chroom 84
Streams API: overdraagbare streams Chroom 85
App-snelkoppelingen Chroom 85
Toegang tot bestandssysteem Chroom 86
tekst/html-ondersteuning voor asynchrone klembord-API Chroom 86
Pan/Tilt-ondersteuning voor camera Chroom 87
FUGU Implementeer het vastleggen van systeem- en applicatie-audio-uitvoer naar koptelefoons en luidsprekers Chroom 88
PointerLock niet-aangepaste beweging Chroom 88
Maak een foto-/videokiezer die lijkt op de fotokiezer op Android Chroom 88
Integratie van Web Share (navigator.share) met Windows 10 Chroom 88
Web NFC Chroom 89
WebHID (Human Interface Device) Chroom 89
Web Serial API Chroom 89
Web delen op desktop Chroom 89
API voor handschriftherkenning Chroom 90
Beheerde configuratie voor webapplicaties Chroom 91
PWA uitvoeren op OS Login Chroom 91
WebCodecs Chroom 93
Detectie van inactiviteit Chroom 94
Pipet-API Chroom 95
App-snelmenu voor PWA's op macOS en Linux Chroom 96
URL Protocol Handler-registratie voor PWA's Chroom 96
WebTransport Chroom 97
Klembord: Bij het plakken van netvliesbeelden gaan de pHYs-metadata verloren. Chroom 98
PWA zou op dezelfde manier verwijderd moeten kunnen worden als een "echte app" Chroom 99
Web NFC: NDEFReader makeReadOnly() Chroom 100
Plaatsing van vensters op meerdere schermen Chroom 100
HIDDevice vergeten() Chroom 100
USBDevice vergeten() Chroom 101
Web USB sameObject-gedrag Chroom 101
Overlay van vensterbedieningen voor geïnstalleerde desktopweb-apps Chroom 102
Bestandsbeheer Chroom 102
chrome.management API kan niet langer communiceren met PWA-apps Chroom 102
SerialPort vergeten() Chroom 103
Lokale lettertypetoegang Chroom 103
Fugu-verzoek: Dynamische app-snelkoppelingen (Snelkoppelingen v2) Chroom 104
Aangepaste webformaten voor Async Clipboard API Chroom 104
Tot nu toe alle verzonden Fugu API's.

Het is een lange lijst, en er staat nog meer op ons bord. Er zijn nog een paar API's en functies die momenteel door ontwikkelaars worden getest (dat wil zeggen geïmplementeerd, maar met een feature flag), aan sommige zijn we al begonnen en veel worden overwogen . Zoals je ziet, is het nog niet tijd om achterover te leunen en te zeggen dat we klaar zijn.

Synchrone bestandsmethoden voor het oorspronkelijke privébestandssysteem

Integendeel, in plaats van onze inspanning als voltooid te bestempelen, staan ​​we eigenlijk pas aan het begin. Kijk bijvoorbeeld naar de onderstaande grafiek die een explosieve relatieve groei laat zien van het gebruik van de navigator.storage.getDirectory() -methode, die wordt gebruikt als toegangspunt tot het oorspronkelijke private file system (OPFS). Deze methode wordt bijvoorbeeld gebruikt voor de hoge prestatievereisten van Photoshop voor opslag , en is een onderwerp waar de opslagcommunity zeer geïnteresseerd in is sinds de veroudering van Web SQL, en zelfs daarvoor.

Grafiek die het sterk stijgende relatieve gebruik van de methode navigator.storage.getDirectory laat zien.

Nu meer mensen OPFS gebruiken, zijn er aanvullende vereisten ontstaan. Bijvoorbeeld de behoefte aan een volledig synchrone set bestandsmethoden in een worker-context (zie whatwg/fs#7 voor achtergrondinformatie). Hoewel nieuwe web-API's over het algemeen asynchroon zijn, zou het gebruik van synchrone methoden het werken met OPFS in een Wasm-context een stuk eenvoudiger maken. En omdat dit in een worker gebeurt, kan de hoofdthread niet worden geblokkeerd.

Verbeteringen in de privacy voor de hardware-API's

Een ander voorbeeld zijn de hardware-API's waarmee u verbinding kunt maken met HID- , seriële , USB- , Bluetooth- en NFC- apparaten. Hoewel sommige van deze API's al een tijdje bestaan, was er tot voor kort geen manier om een ​​apparaat te vergeten waarmee u eerder verbinding had gemaakt. Dankzij de forget() -methoden voor sommige API's is dat nu wel mogelijk. Hier leest u bijvoorbeeld hoe u een eerder verbonden serieel apparaat kunt vergeten, wat de privacy van de API verbetert.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Verfijningen voor de Multi-Screen Window Placement API

Een laatste voorbeeld is de Multi-Screen Window Placement API , waarbij op basis van feedback van ontwikkelaars de voorheen generieke schermlabels zoals "Internal Display 1" zijn vervangen door betekenisvollere labels zoals "Built-in Retina Display" zodat gebruikers deze labels eenvoudiger kunnen koppelen aan de schermen van hun opstelling met meerdere schermen.

Conclusies

Zoals je aan deze drie voorbeelden kunt zien, is Project Fugu nog lang niet af. Behoud of begin met het gebruiken van onze API's en stuur feedback. Omdat alle Fugu-specificaties openbaar worden ontwikkeld op GitHub, kun je een specificatie-issue melden in de bijbehorende GitHub-repository of je mening geven over een bestaand issue. Als je een bug in de Chrome-implementatie vindt, of ontdekt dat de implementatie afwijkt van de specificatie, meld dan een bug op new.crbug.com . Zorg ervoor dat je zoveel mogelijk details geeft en eenvoudige instructies voor reproductie.

En als u zich zorgen maakt over browserondersteuning, zorgen veel Fugu API's voor geweldige progressieve verbeteringen. Zie mijn artikel SVGcode: een PWA om rasterafbeeldingen naar SVG-vectorafbeeldingen te converteren ter inspiratie. We beschouwen onze taak pas als voltooid zodra deze API's interoperabel zijn, en we zullen blijven aandringen op verdere standaardisatie, tests en acceptatie door andere browsers.