Is Project Fugu ‘klaar’?

Omdat een van de doelstellingen van het Project Fugu-team is om het voor ontwikkelaars mogelijk te maken alles op internet te doen wat platformspecifieke apps kunnen , is het team 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 het gedeelte 'Verzonden' van de Fugu API-tracker. Hier zijn de 55 verzonden API's, in volgorde van minst tot meest recent verzonden:

API-naam Binnen verzonden
Web Bluetooth-API Chroom 56
WebUSB-API Chroom 61
Doel voor webshare Chroom 71
Webshare-API-niveau 2 Chroom 75
Asynchrone klembord: afbeeldingen lezen en schrijven Chroom 76
Doelniveau voor webshare 2 Chroom 76
Toetshint invoeren Chroom 77
Breid het opslagquotum uit Chroom 78
Ontvang de geïnstalleerde API voor 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
Badge-API Chroom 81
Sta toe dat de Badging API door een servicemedewerker via Push wordt gebruikt Chroom 81
API voor streepjescodedetectie Chroom 83
API voor inhoudsindexering Chroom 84
WebOTP Chroom 84
Screen Wake Lock-API Chroom 84
Streams API: overdraagbare streams Chroom 85
App-snelkoppelingen Chroom 85
Toegang tot bestandssysteem Chroom 86
text/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 hoofdtelefoons en luidsprekers Chroom 88
PointerLock niet aangepastBeweging Chroom 88
Maak een foto-/videokiezer, vergelijkbaar met de fotokiezer op Android Chroom 88
Integratie van Web Share (navigator.share) met Windows 10 Chroom 88
Web-NFC Chroom 89
WebHID (Human Interface-apparaat) Chroom 89
Web-seriële API Chroom 89
Webshare op desktop Chroom 89
API voor handschriftherkenning Chroom 90
Beheerde configuratie voor webapplicaties Chroom 91
Voer PWA uit bij inloggen op het besturingssysteem Chroom 91
Webcodecs Chroom 93
Inactieve detectie Chroom 94
EyeDropper-API Chroom 95
App-snelmenu voor PWA's op macOS en Linux Chroom 96
Registratie van URL-protocolhandler voor PWA's Chroom 96
WebTransport Chroom 97
Klembord: bij het plakken van retina-afbeeldingen gaan de metagegevens van pHY verloren. Chroom 98
PWA zou op dezelfde manier moeten kunnen worden verwijderd als een 'echte app' Chroom 99
Web-NFC: NDEFReader makeReadOnly() Chroom 100
Vensterplaatsing op meerdere schermen Chroom 100
HIDApparaat vergeten() Chroom 100
USB-apparaat vergeten() Chroom 101
Web USB sameObject-gedrag Chroom 101
Overlay met vensterbediening voor geïnstalleerde desktopwebapps Chroom 102
Bestandsbehandeling Chroom 102
chrome.management API kan niet langer communiceren met PWA-apps Chroom 102
Seriële poort vergeten() Chroom 103
Lokale lettertypetoegang Chroom 103
Fugu-verzoek: dynamische app-snelkoppelingen (snelkoppelingen v2) Chroom 104
Web Aangepaste formaten voor Asynchrone Klembord-API Chroom 104
Alle verzonden Fugu-API's tot nu toe.

Het is een lange lijst, en er ligt nog meer op ons bord. Er zijn momenteel nog een aantal API's en functies in de proeffase voor ontwikkelaars (dat wil zeggen geïmplementeerd, maar achter een functievlag), aan sommige zijn we begonnen te werken, en vele worden momenteel overwogen . Zoals u kunt zien, is het geen tijd om achterover te leunen en te zeggen dat we klaar zijn.

Synchrone bestandsmethoden voor het oorspronkelijke privébestandssysteem

Integendeel: in plaats van onze inspanningen als voltooid te verklaren, zijn we eigenlijk nog maar net begonnen. Kijk bijvoorbeeld eens naar het onderstaande diagram, dat de torenhoge relatieve gebruiksgroei laat zien van de methode navigator.storage.getDirectory() , die wordt gebruikt als toegangspunt tot het oorspronkelijke privébestandssysteem (OPFS). Deze methode wordt bijvoorbeeld gebruikt voor de hoge prestatie-opslagbehoeften van Photoshop , en waarin de opslaggemeenschap zeer geïnteresseerd is sinds de start van de afschaffing van Web SQL en zelfs daarvoor.

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

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

Privacyverbeteringen 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 je eerder verbinding had gemaakt. Nu is er dankzij de forget() methoden voor sommige API's. Hier leest u bijvoorbeeld hoe u een eerder verbonden serieel apparaat kunt vergeten, waardoor de privacy van de API wordt verbeterd.

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

Verfijningen voor de API voor vensterplaatsing op meerdere schermen

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" werden vervangen door betekenisvollere labels zoals "Built-in Retina Display" zodat gebruikers gemakkelijker kunnen associëren deze labels met de schermen van hun opstelling met meerdere schermen.

Conclusies

Zoals u aan de hand van deze drie voorbeelden kunt zien, is Project Fugu nog lang niet klaar. Behoud of gebruik onze API's en stuur feedback. Omdat alle Fugu-specificaties in het openbaar op GitHub worden ontwikkeld, kun je een spec-probleem indienen op de overeenkomstige GitHub-opslagplaats of je mening toevoegen aan een bestaand probleem. Als u een bug vindt in de implementatie van Chrome, of ontdekt dat de implementatie afwijkt van de specificaties, dient u een bug in op new.crbug.com . Zorg ervoor dat u zoveel mogelijk details vermeldt en eenvoudige reproductie-instructies geeft.

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