L'un des objectifs de l'équipe du projet Fugu est de permettre aux développeurs de faire tout ce que les applications spécifiques à une plate-forme peuvent faire sur le Web. L'équipe a donc été occupée à ajouter les fonctionnalités manquantes dont les développeurs Web avaient besoin pour combler cette lacune. Si vous ne me croyez pas, consultez simplement la section "Expédié" du traceur de l'API Fugu. Voici les 55 API publiées, de la plus ancienne à la plus récente:
La liste est longue, et nous avons d'autres projets en cours. Certaines API et fonctionnalités sont toujours en test pour les développeurs (c'est-à-dire implémentées, mais derrière un flag de fonctionnalité), d'autres sur lesquelles nous avons commencé à travailler et de nombreuses en cours d'examen. Comme vous pouvez le constater, il n'est pas encore temps de se reposer et de dire que nous avons terminé.
Méthodes de fichiers synchrones pour le système de fichiers privé de l'origine
Bien au contraire, plutôt que de déclarer notre effort comme terminé, nous ne faisons que commencer. Par exemple, le graphique ci-dessous montre une croissance exponentielle de l'utilisation relative de la méthode navigator.storage.getDirectory()
, utilisée comme point d'entrée du système de fichiers privé d'origine (OPFS). Cette méthode est utilisée, par exemple, pour les besoins de stockage hautes performances de Photoshop, qui intéressent vivement la communauté du stockage depuis le début de l'abandon de Web SQL et même avant.
Maintenant que davantage de personnes utilisent l'OPFS, des exigences supplémentaires ont vu le jour. Par exemple, la nécessité d'un ensemble de méthodes de fichiers entièrement synchrones dans un contexte de nœud de calcul (voir whatwg/fs#7 pour en savoir plus). Bien que les nouvelles API Web soient généralement asynchrones, la présence de méthodes synchrones simplifierait grandement l'utilisation de l'OPFS dans un contexte Wasm. Étant donné que cela se produit dans un worker, le thread principal ne peut pas être bloqué.
Améliorations de la confidentialité pour les API matérielles
Autre exemple : les API matérielles qui vous permettent de vous connecter à des appareils HID, série, USB, Bluetooth et NFC. Bien que certaines de ces API existent depuis un certain temps, il n'était jusqu'à récemment pas possible d'oublier un appareil auquel vous aviez déjà été connecté. C'est désormais possible grâce aux méthodes forget()
pour certaines des API. Par exemple, voici comment oublier un appareil série précédemment connecté, ce qui améliore la confidentialité de l'API.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Améliorations apportées à l'API Multi-Screen Window Placement
Un dernier exemple est l'API Multi-Screen Window Placement, où, sur la base des commentaires des développeurs, les libellés d'écran génériques tels que "Internal Display 1"
ont été remplacés par des libellés plus pertinents tels que "Built-in Retina Display"
afin que les utilisateurs puissent associer plus facilement ces libellés aux écrans de leur configuration multi-écran.
Conclusions
Comme vous pouvez le constater avec ces trois exemples, le projet Fugu est loin d'être terminé. Continuez à utiliser nos API ou commencez à les utiliser, et envoyez-nous vos commentaires. Étant donné que toutes les spécifications Fugu sont développées en public sur GitHub, vous pouvez signaler un problème de spécification dans le dépôt GitHub correspondant ou ajouter vos commentaires à un problème existant. Si vous trouvez un bug dans l'implémentation de Chrome ou si vous découvrez que l'implémentation est différente de la spécification, signalez-le sur new.crbug.com. Veillez à inclure autant de détails que possible et à fournir des instructions simples pour reproduire le problème.
Si vous vous préoccupez de la compatibilité avec les navigateurs, de nombreuses API Fugu offrent d'excellentes améliorations progressives. Consultez mon article SVGcode: une PWA pour convertir des images matricielles en graphiques vectoriels SVG pour vous inspirer. Nous ne considérons pas notre travail terminé tant que ces API ne sont pas interopérables. Nous allons continuer à encourager la normalisation, les tests et l'adoption par d'autres navigateurs.