Jednym z celów zespołu projektu Fugu jest umożliwienie deweloperom wykonywania w internecie wszystkich czynności, które są dostępne w aplikacji na daną platformę. Zespół pracował nad dodaniem funkcji, których brakowało deweloperom stron internetowych, aby wypełnić tę lukę. Jeśli nie wierzysz, sprawdź sekcję „Wysłano” w śledzeniu Fugu API. Oto 55 udostępnionych interfejsów API w kolejności od najstarszego do najnowszego:
To długa lista, a mamy jeszcze inne zadania. Nadal jest kilka interfejsów API i funkcji, które są obecnie w fazie testów dla deweloperów (czyli są zaimplementowane, ale za pomocą flagi funkcji), kilka, nad którymi zaczęliśmy już pracować, i wiele poddanych pod rozwagę. Jak widzisz, nie czas jeszcze na odpoczynek.
Metody synchronicznych plików w przypadku prywatnego systemu plików źródłowego
Wręcz przeciwnie, nasze działania dopiero się rozpoczynają, a nie są już zakończone. Rozważ na przykład wykres poniżej, który pokazuje bardzo szybki wzrost względnego wykorzystania metody navigator.storage.getDirectory()
, która służy jako punkt wejścia do prywatnego systemu plików pochodzenia (OPFS). Ta metoda jest używana na przykład w przypadku wysokowydajnych magazynów danych Photoshopa, które są bardzo interesujące dla społeczności od czasu wycofania Web SQL i jeszcze wcześniej.
Obecnie, gdy z OPFS korzysta więcej osób, pojawiły się dodatkowe wymagania. Może to być na przykład potrzeba zapewnienia w kontekście wątku roboczego pełnego zestawu synchronicznych metod obsługi plików (więcej informacji znajdziesz w artykule whatwg/fs#7). Chociaż nowe interfejsy API w ogóle są asynchroniczne, posiadanie metod synchronicznych znacznie ułatwiłoby pracę z OPFS w kontekście Wasm. Ponieważ wszystko to dzieje się w procesie workera, wątek główny nie może być zablokowany.
Ulepszenia dotyczące prywatności w interfejsach API sprzętowych
Innym przykładem są interfejsy API sprzętu, które umożliwiają nawiązywanie połączeń z urządzeniami HID, szeregowymi, USB, Bluetooth i NFC. Chociaż niektóre z tych interfejsów API są dostępne od jakiegoś czasu, do niedawna nie było możliwości odłączenia urządzenia, z którym wcześniej było połączone. Teraz, dzięki metodom forget()
, możesz korzystać z niektórych interfejsów API. Na przykład możesz usunąć z pamięci wcześniej podłą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();
Ulepszenia interfejsu Multi-Screen Window Placement API
Ostatnim przykładem jest interfejs Window Placement API na wielu urządzeniach, w którym na podstawie opinii deweloperów ogólne etykiety ekranów, takie jak "Internal Display 1"
, zostały zastąpione bardziej znaczącymi etykietami, np. "Built-in Retina Display"
, aby użytkownicy mogli łatwiej kojarzyć te etykiety z ekranami w konfiguracji wielu ekranów.
Podsumowanie
Jak widać na tych 3 przykładach, projekt Fugu jest jeszcze bardzo daleka od ukończenia. Kontynuuj lub zacznij korzystać z naszych interfejsów API i przesyłaj opinie. Wszystkie specyfikacje Fugu są opracowywane publicznie na GitHubie, więc możesz zgłosić problem ze specyfikacją w odpowiednim repozytorium GitHub lub dodać swoje uwagi do istniejącego problemu. Jeśli znajdziesz błąd w implementacji Chrome lub zauważysz, że implementacja jest inna niż w specyfikacji, zgłoś błąd na stronie new.crbug.com. Pamiętaj, aby podać jak najwięcej szczegółów i podać proste instrukcje odtwarzania błędu.
Jeśli martwisz się obsługą w przeglądarkach, wiele interfejsów API Fugu zapewnia świetne ulepszenia progresywne. Zainspiruj się moim artykułem SVGcode: PWA do konwertowania obrazów rastrowych na wektorowe grafiki SVG. Nie uważamy też, że nasze zadanie jest wykonane, dopóki te interfejsy API nie będą interoperacyjne. Będziemy nadal dążyć do dalszej standaryzacji, testowania i wdrażania ich w innych przeglądarkach.