Project Fugu팀의 목표 중 하나는 개발자가 플랫폼별 앱에서 할 수 있는 모든 작업을 웹에서 할 수 있도록 하는 것이므로 팀은 웹 개발자가 이 앱 격차를 해소하는 데 필요한 누락된 기능을 추가하는 데 바빴습니다. 믿지 못하시겠다면 Fugu API 추적기의 '배송됨' 섹션을 살펴보세요. 다음은 가장 최근에 출시된 API부터 가장 오래된 API까지 출시된 55개의 API입니다.
해야 할 일이 많고 앞으로도 더 많은 일이 있을 것입니다. 현재 개발자 체험판 (구현되었지만 기능 플래그 뒤에 있음)에 있는 API와 기능이 몇 가지 있으며, 작업을 시작한 기능도 있고 고려 중인 기능도 많습니다. 보시다시피 아직 완료되었다고 안심할 때가 아닙니다.
출처 비공개 파일 시스템의 동기식 파일 메서드
오히려 YouTube는 노력을 완료했다고 선언하기보다는 이제 시작에 불과하다고 생각합니다. 예를 들어 아래 차트는 출처 비공개 파일 시스템 (OPFS)의 진입점으로 사용되는 navigator.storage.getDirectory()
메서드의 상대 사용량 급증을 보여줍니다. 이 메서드는 예를 들어 Photoshop의 고성능 스토리지 요구사항에 사용되며, Web SQL 지원 중단이 시작된 이후 그리고 그 이전부터 스토리지 커뮤니티에서 큰 관심을 기울이고 있습니다.
이제 더 많은 사용자가 OPFS를 사용함에 따라 추가 요구사항이 발생했습니다. 예를 들어 워커 컨텍스트에서 완전히 동기식 파일 메서드 세트가 필요합니다 (배경 정보는 whatwg/fs#7 참고). 새 웹 API는 일반적으로 비동기식이지만 동기식 메서드를 사용하면 Wasm 컨텍스트에서 OPFS를 훨씬 더 간단하게 사용할 수 있습니다. 이는 작업자에서 발생하므로 기본 스레드가 차단될 수 없습니다.
하드웨어 API의 개인 정보 보호 개선
또 다른 예는 HID, 직렬, 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();
멀티스크린 창 배치 API 개선사항
마지막 예는 Multi-Screen Window Placement API입니다. 여기서는 개발자 의견을 바탕으로 이전에 "Internal Display 1"
와 같은 일반 화면 라벨이 "Built-in Retina Display"
와 같은 더 의미 있는 라벨로 대체되어 사용자가 이러한 라벨을 멀티스크린 설정의 화면과 더 쉽게 연결할 수 있습니다.
결론
이 세 가지 예에서 알 수 있듯이 Project Fugu는 아직 완료되지 않았습니다. Google API를 계속 사용하거나 사용을 시작하고 의견을 보내주세요. 모든 Fugu 사양은 GitHub에서 공개적으로 개발되므로 해당 GitHub 저장소에서 사양 문제를 제출하거나 기존 문제에 의견을 추가할 수 있습니다. Chrome 구현에 버그가 있거나 구현이 사양과 다르다는 것을 발견한 경우 new.crbug.com에서 버그를 신고하세요. 최대한 많은 세부정보를 포함하고 재현을 위한 간단한 안내를 제공해야 합니다.
브라우저 지원이 우려되는 경우 많은 Fugu API를 통해 점진적인 개선을 실행할 수 있습니다. 아이디어를 얻으려면 SVGcode: 래스터 이미지를 SVG 벡터 그래픽으로 변환하는 PWA 도움말을 참고하세요. 또한 이러한 API가 상호 운용될 때까지는 우리의 작업이 완료되었다고 생각하지 않으며, 다른 브라우저의 추가 표준화, 테스트, 채택을 계속 추진할 것입니다.