Jednym z celów zespołu Project Fugu jest umożliwienie deweloperom korzystania w internecie z wszystkiego, co aplikacje na danej platformie, dlatego zespół zajmuje się dodawaniem brakujących funkcji internetowych potrzebnych deweloperom stron internetowych. Jeśli mi nie wierzysz, przejrzyj sekcję „Shipped” (Wysłano) w narzędziu do śledzenia interfejsu Fugu API. Oto 55 wysłanych interfejsów API w kolejności od najmniej do ostatniego:
To długa lista, a tak mamy ochotę na więcej. Obecnie znajduje się jeszcze kilka interfejsów API i funkcji, które są obecnie w wersji próbnej dla programistów (które zostały wdrożone, ale znajdują się poniżej flagi funkcji), a niektóre zaczęliśmy nad nimi pracować, a wiele rozważa. Jak widać, nie czas już sobie oglądać i mówić, że skończyliśmy.
Synchroniczne metody plików w prywatnym systemie plików źródła
Wręcz przeciwnie, zamiast deklarować nasze wysiłki jako zakończone, w rzeczywistości dopiero zaczynamy. Spójrzmy na przykład poniżej wykres przedstawiający gwałtowny wzrost względnego wykorzystania metody navigator.storage.getDirectory()
wykorzystywanej jako punkt wejścia do prywatnego systemu plików źródła (OPFS). Ta metoda jest wykorzystywana np. w przypadku wydajnego miejsca na dane w Photoshopie, którego bardzo interesuje społeczność zajmująca się miejscem na dane, ponieważ rozpoczęto wycofywanie Web SQL, a nawet wcześniej.
Teraz, gdy więcej osób korzysta z OPFS, pojawiają się dodatkowe wymagania. Dotyczy to na przykład w pełni synchronicznego zestawu metod pliku w środowisku roboczym (informacje o tle znajdziesz w artykule whatwg/fs#7). Nowe internetowe interfejsy API są zazwyczaj asynchroniczne, ale stosowanie metod synchronicznych znacznie ułatwiłoby pracę z OPFS w kontekście Wasm, a ponieważ dzieje się to w instancji roboczej, nie można zablokować wątku głównego.
Usprawnienia ochrony prywatności dotyczące sprzętowych interfejsów API
Inne przykłady to sprzętowe interfejsy API, które umożliwiają łączenie się z urządzeniami HID, serial, USB, Bluetooth i NFC. Choć niektóre z tych interfejsów API są używane już od jakiegoś czasu, do niedawna nie można było zapomnieć urządzenia, z którym było wcześniej połączone. Istnieją teraz metody forget()
dla niektórych interfejsów API. W ten sposób możesz na przykład zapomnieć wcześniej połączone urządzenie szeregowe, co zwiększy prywatność interfejsu API.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Udoskonalenia interfejsu Multi-Screen Window Placement API
Ostatnim przykładem jest interfejs Multi-Screen Window Placement API, w którym – zgodnie z opiniami deweloperów – wcześniej ogólne etykiety ekranu (np. "Internal Display 1"
) zostały zastąpione bardziej znaczącymi etykietami, np. "Built-in Retina Display"
, by użytkownicy mogli łatwiej powiązać te etykiety z ekranami konfiguracji pod kątem wielu urządzeń.
Podsumowanie
Jak widać tylko na tych 3 przykładach, Projekt Fugu nie jest jeszcze ukończony. Zacznij lub zacznij korzystać z naszych interfejsów API i prześlij opinię. Wszystkie specyfikacje Fugu są opracowywane na licencji otwartej na GitHubie, więc możesz zgłosić problem związany ze specyfikacją w odpowiednim repozytorium GitHub lub dodać uwagi o istniejącym problemie. Jeśli zauważysz błąd w implementacji Chrome lub odkryjesz, że implementacja różni się od specyfikacji, zgłoś błąd na stronie new.crbug.com. Podaj jak najwięcej szczegółów i proste instrukcje odtwarzania.
Jeśli masz obawy związane z obsługą przeglądarek, wiele interfejsów Fugu API zapewnia szereg ulepszeń. Aby znaleźć inspirację, przeczytaj artykuł SVGcode: PWA do konwertowania obrazów rastrowych na grafikę wektorową SVG. Ponadto uważamy, że nasza praca nie jest wykonywana, dopóki te interfejsy API nie będą współdziałać, i nadal będziemy dążyć do dalszej standaryzacji, testowania i wdrożenia tych interfejsów w innych przeglądarkach.