Project Fugu팀은 개발자가 플랫폼별 앱으로 할 수 있는 모든 작업을 웹에서 실행할 수 있도록 하는 것을 목표로 하여 웹 개발자가 이 앱 격차를 메우는 데 필요한 누락된 기능을 추가하느라 바빠졌습니다. 믿기지 않는다면 Fugu API 추적기의 'Shipped' 섹션을 살펴보세요. 다음은 출시된 55개의 API이며 가장 오래된 것부터 가장 최근에 제공된 것 순으로 나열되어 있습니다.
목록이 길고 더 많은 메뉴도 있습니다. 현재 개발자 체험판에는 몇 가지 API 및 기능이 있으며 (구현된 기능이지만 기능 플래그 뒤에 있음), 일부는 Google에서 시작하기 시작했으며, 많은 API와 기능이 고려 중입니다. 보시다시피, 이제 돌아서서 다 했다고 말해서는 안 됩니다.
원본 비공개 파일 시스템을 위한 동기 파일 메서드
이와는 오히려 노력이 완료되었다고 선언하는 것이 아니라 이제 시작에 불과합니다. 예를 들어 원본 비공개 파일 시스템 (OPFS)의 진입점으로 사용되는 navigator.storage.getDirectory()
메서드의 상대적 사용량 증가를 보여주는 아래 차트를 살펴보세요. 이 방법은 예를 들어 Photoshop의 고성능 스토리지 요구사항에 사용되고, 웹 SQL의 지원 중단이 시작된 이후, 그리고 더 나아가 그 이전까지도 스토리지 커뮤니티에서 많은 관심을 가지고 있습니다.
이제 더 많은 사람들이 OPFS를 사용하게 되면서 추가적인 요구사항이 생겼습니다. 예를 들어 작업자 컨텍스트에 완전 동기식 파일 메서드 집합이 필요한 경우가 있습니다 (배경은 whatwg/fs#7 참고). 새 웹 API는 일반적으로 비동기식이지만 동기 메서드를 사용하면 Wasm 컨텍스트에서 OPFS를 사용하는 것이 훨씬 간단해집니다. 이 작업은 worker에서 발생하므로 기본 스레드를 차단할 수 없습니다.
하드웨어 API의 개인 정보 보호 개선
또 다른 예로는 HID, serial, USB, 블루투스, NFC 기기에 연결할 수 있는 하드웨어 API가 있습니다. 이러한 API 중 일부는 한동안 사용되었지만, 최근까지는 이전에 연결했던 기기를 삭제할 방법이 없었습니다. 이제 일부 API에는 forget()
메서드 덕분입니다. 예를 들어 이전에 연결된 직렬 기기를 삭제하는 방법은 다음과 같습니다. 이를 통해 API의 개인 정보 보호가 개선됩니다.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
Multi-Screen Window Placement API 개선
마지막 예는 Multi-Screen Window Placement API로, 개발자 의견에 따라 이전의 일반 화면 라벨(예: "Internal Display 1"
)을 "Built-in Retina Display"
와 같은 좀 더 의미 있는 라벨로 대체하여 사용자가 이러한 라벨을 멀티스크린 설정 화면과 더 쉽게 연결할 수 있습니다.
결론
이 세 가지 예에서 알 수 있듯이 Project Fugu는 아직 완성되지 않았습니다. API를 계속 사용하거나 사용해 보고 의견을 보내주세요. 모든 Fugu 사양은 GitHub에서 공개 상태로 개발되므로 해당 GitHub 저장소에서 사양 문제를 제출하거나 기존 문제에 의견을 추가할 수 있습니다. Chrome 구현에서 버그를 발견하거나 구현이 사양과 다르다는 것을 발견한 경우 new.crbug.com에서 버그를 신고하세요. 최대한 많은 세부정보를 포함하고 재현을 위한 간단한 안내를 제공하세요.
또한 브라우저 지원이 우려된다면 여러 Fugu API를 통해 점진적으로 개선할 수 있습니다. 자세한 내용은 SVGcode: 래스터 이미지를 SVG 벡터 그래픽으로 변환하는 PWA 도움말을 참고하세요. 또한 이러한 API가 상호 운용이 가능하기 전까지는 이 작업이 끝났다고 생각하지 않으며, 계속해서 추가적인 표준화, 테스트, 다른 브라우저의 채택을 위해 노력할 것입니다.