Czy Projekt Fugu jest „gotowy”?

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:

Nazwa interfejsu API Wysłano w
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Udostępnianie przez przeglądarkę – doceloweChrome 71
Web Share API Level 2Chrome 75
Schowek asynchroniczny: odczyt i zapisywanie obrazówChrome 76
Docelowy poziom 2 – udostępnianie w internecieChrome 76
Wpisz podpowiedź dotyczącą kluczaChrome 77
Więcej miejsca na daneChrome 78
Interfejs API Get Installed Related AppsChrome 80
Okresowa synchronizacja w tleChrome 80
desktop-pwas: obsługa trybu wyświetlania „minimal-ui”Chrome 80
Kodeki kompresjiChrome 80
Contacts APIChrome 80
Badging APIChrome 81
Zezwalanie na używanie interfejsu Badging API z poziomu skryptu service workera za pomocą metody PushChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Interfejs Screen Wake Lock APIChrome 84
Streams API: przenoszenie strumieniChrome 85
Skróty do aplikacjiChrome 85
Dostęp do systemu plikówChrome 86
Obsługa formatu text/html w przypadku interfejsu Async Clipboard APIChrome 86
Obsługa przesuwania i pochylania w aplikacji AparatChrome 87
FUGU Implement capture of system and application audio output to headphones and speakers Chrome 88
PointerLock unadjustedMovementChrome 88
Tworzenie selektora zdjęć/filmów podobnego do selektora zdjęć na AndroidzieChrome 88
Web Share (navigator.share) integration with Windows 10Chrome 88
Web NFCChrome 89
WebHID (Human Interface Device)Chrome 89
Web Serial APIChrome 89
Web Share na komputerzeChrome 89
Handwriting Recognition APIChrome 90
Konfiguracja zarządzana dla aplikacji internetowychChrome 91
Uruchamianie PWA w usłudze OS LoginChrome 91
WebCodecsChrome 93
Wykrywanie bezczynnościChrome 94
EyeDropper APIChrome 95
Menu skrótu do aplikacji w przypadku PWAs na komputerach z systemem macOS i LinuxChrome 96
Rejestracja modułu obsługi protokołu URL na potrzeby PWA Chrome 96
WebTransportChrome 97
Schowek: wklejanie obrazów w wysokiej rozdzielczości powoduje utratę metadanych pHYs.Chrome 98
Aplikację PWA powinno można odinstalować w taki sam sposób jak „prawdziwą aplikację”Chrome 99
Web NFC: NDEFReader makeReadOnly()Chrome 100
Window Placement API na wielu ekranachChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Poradnik Chrome
Zachowanie funkcji sameObject w przypadku interfejsu WebUSBPoradnik Chrome
Nakładka z elementami sterującymi okna w przypadku zainstalowanych aplikacji internetowych na komputerChrome 102
Przetwarzanie plikówChrome 102
Interfejs API chrome.management nie może już wchodzić w interakcje z aplikacjami PWAChrome 102
SerialPort forget()Chrome 103
Dostęp do czcionek lokalnychChrome 103
Prośba o przeniesienie: dynamiczne skróty do aplikacji (wersja 2)Chrome 104
Formaty niestandardowe w internecie w przypadku interfejsu Async Clipboard APIChrome 104
Wszystkie do tej pory opublikowane interfejsy Fugu API.

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.

Wykres pokazujący gwałtowny wzrost względnego użycia metody navigator.storage.getDirectory.

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, BluetoothNFC. 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.