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 wersji próbnej 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, zamiast deklarować, że nasze działania dobiegły końca, twierdzimy, że dopiero się rozpoczynamy. 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. Na przykład może być konieczne użycie w kontekście wątku pełnego zestawu synchronicznych metod pliku (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 sposobu na zapomnienie urządzenia, z którym wcześniej było połączone. Teraz dzięki metodom forget()
można to robić w przypadku 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 API dotyczący umieszczania okien na wielu ekranach, 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, takimi jak "Built-in Retina Display"
, aby użytkownicy mogli łatwiej kojarzyć te etykiety z ekranami w ustawieniach 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 w 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ądarce, 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.