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:
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.
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.