Project Fugu "เสร็จสิ้น"หรือไม่

เป้าหมายหนึ่งของทีม Project Fugu คือ ช่วยให้นักพัฒนาซอฟต์แวร์ทำสิ่งต่างๆ บนเว็บได้เหมือนกับที่แอปเฉพาะแพลตฟอร์มทำได้ ทางทีมจึงทุ่มเทให้กับการเพิ่มฟีเจอร์ที่ขาดหายไป ซึ่งนักพัฒนาเว็บต้องใช้เพื่อปิดช่องโหว่ของแอปนี้ ถ้าคุณไม่เชื่อ ก็ดูได้ที่ส่วน "จัดส่งแล้ว" ของเครื่องมือติดตาม Fugu API ต่อไปนี้คือ API ที่จัดส่งแล้ว 55 รายการ โดยเรียงลำดับจากล่าสุดที่จัดส่งเป็นอย่างน้อย

ชื่อ API จัดส่งแล้ว
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
เป้าหมายการแชร์เว็บChrome 71
Web Share API ระดับ 2Chrome 75
คลิปบอร์ดแบบไม่พร้อมกัน: อ่านและเขียนรูปภาพChrome 76
ส่วนแบ่งเว็บเป้าหมายระดับ 2Chrome 76
ป้อนคำแนะนำหลักChrome 77
ขยายโควต้าพื้นที่เก็บข้อมูลChrome 78
รับการติดตั้ง API ของแอปที่เกี่ยวข้องChrome 80
การซิงค์ในเบื้องหลังตามระยะเวลาChrome 80
desktop-pwas: รองรับโหมดการแสดงผล "minimal-ui"Chrome 80
ตัวแปลงรหัสการบีบอัดChrome 80
API รายชื่อติดต่อChrome 80
API ป้ายChrome 81
อนุญาตให้ใช้ Badging API จาก Service Worker ผ่านพุชChrome 81
API การตรวจจับบาร์โค้ดChrome 83
API การจัดทำดัชนีเนื้อหาChrome 84
WebOTPChrome 84
API การล็อกหน้าจอChrome 84
Streams API: สตรีมที่โอนได้Chrome 85
ทางลัดของแอปChrome 85
การเข้าถึงระบบไฟล์Chrome 86
การรองรับข้อความ/html สำหรับ API คลิปบอร์ดแบบไม่พร้อมกันChrome 86
การรองรับการแพน/เอียงสำหรับกล้องถ่ายรูปChrome 87
FUGU ใช้การบันทึกเอาต์พุตเสียงของระบบและแอปพลิเคชันในหูฟังและลำโพง Chrome 88
การยกเลิกการปรับของ PointerLockChrome 88
สร้างเครื่องมือเลือกรูปภาพ/วิดีโอที่คล้ายกับเครื่องมือเลือกรูปภาพใน AndroidChrome 88
การผสานรวม Web Share (navigator.share) กับ Windows 10Chrome 88
Web NFCChrome 89
WebHID (อุปกรณ์อินเทอร์เฟซมนุษย์)Chrome 89
Web Serial APIChrome 89
การแชร์เว็บบนเดสก์ท็อปChrome 89
Handwriting Recognition APIChrome 90
การกำหนดค่าที่มีการจัดการสำหรับเว็บแอปพลิเคชันChrome 91
เรียกใช้ PWA ในการเข้าสู่ระบบระบบปฏิบัติการChrome 91
WebCodecsChrome 93
การตรวจจับเมื่อไม่มีการใช้งานChrome 94
EyeDropper APIChrome 95
เมนูทางลัดของแอปสำหรับ PWA ใน macOS และ LinuxChrome 96
การลงทะเบียนตัวแฮนเดิลโปรโตคอล URL สำหรับ PWA Chrome 96
WebTransportChrome 97
คลิปบอร์ด: การวางรูปภาพจอตาจะสูญเสียข้อมูลเมตา pHYChrome 98
ควรถอนการติดตั้ง PWA ได้เช่นเดียวกับ "แอปจริง"Chrome 99
Web NFC: NDEFReader makeReadOnly()Chrome 100
ตำแหน่งหน้าต่างสำหรับหลายหน้าจอChrome 100
ลืม HIDDevice()Chrome 100
USBDevice ลืม()Chrome 101
ลักษณะการทำงานของ USB sameObject ในเว็บChrome 101
การวางซ้อนการควบคุมหน้าต่างสำหรับเว็บแอปบนเดสก์ท็อปที่ติดตั้งไว้Chrome 102
การจัดการไฟล์Chrome 102
chrome.management API โต้ตอบกับแอป PWA ไม่ได้อีกต่อไปChrome 102
ลืม SerialPort()Chrome 103
การเข้าถึงแบบอักษรในเครื่องChrome 103
คำขอของ Fugu: ทางลัดแอปแบบไดนามิก (ทางลัด v2)Chrome 104
รูปแบบที่กำหนดเองของเว็บสำหรับ API คลิปบอร์ดแบบไม่พร้อมกันChrome 104
Fugu API ทั้งหมดจัดส่งจนถึงตอนนี้

รายชื่อนั้นยาวเหยียดแล้วล่ะ ยังมี API และฟีเจอร์อยู่ 2-3 รายการ ที่อยู่ในการทดลองใช้สำหรับนักพัฒนาซอฟต์แวร์ในขณะนี้ (ซึ่งมีการใช้งาน แต่อยู่ภายใต้แฟล็กฟีเจอร์) บางรายการที่เราเริ่มต้องพัฒนา และอีกหลายรายการอยู่ระหว่างการพิจารณา จะเห็นได้ว่าตอนนี้ยังไม่ถึงเวลาที่เราจะเอนหลังและบอกว่าเราทำเสร็จแล้ว

เมธอดไฟล์แบบซิงโครนัสสำหรับระบบไฟล์ส่วนตัวต้นทาง

ในทางตรงกันข้าม แทนที่จะประกาศว่าเราเสร็จสมบูรณ์แล้ว จริงๆ แล้วเราเพิ่งเริ่มต้นเท่านั้น ลองดูแผนภูมิด้านล่างที่แสดงการเติบโตแบบสัมพัทธ์ในการใช้งานแบบพุ่งสูงขึ้นของเมธอด navigator.storage.getDirectory() ซึ่งใช้เป็นจุดเข้าถึงระบบไฟล์ส่วนตัวต้นทาง (OPFS) วิธีการนี้ใช้สำหรับผู้ที่ต้องการพื้นที่เก็บข้อมูลประสิทธิภาพสูงของ Photoshop และชุมชนพื้นที่เก็บข้อมูลให้ความสนใจอย่างมาก ตั้งแต่เริ่มเลิกใช้งาน Web SQL และแม้แต่ก่อนหน้า

แผนภูมิแสดงการใช้งานแบบสัมพัทธ์ที่พุ่งสูงขึ้นของเมธอด navigator.storage.getDirectory

เนื่องจากตอนนี้มีคนใช้ OPFS มากขึ้น ข้อกำหนดเพิ่มเติมจึงเกิดขึ้น เช่น ความต้องการชุดเมธอดไฟล์แบบซิงโครนัสทั้งหมดในบริบทของผู้ปฏิบัติงาน (โปรดดูข้อมูลเบื้องต้นใน whatwg/fs#7) แม้ว่าโดยทั่วไปแล้ว API ของเว็บใหม่ๆ จะเป็นแบบไม่พร้อมกัน แต่การใช้เมธอดแบบซิงโครนัสจะทำให้การทำงานกับ OPFS ทำได้ง่ายขึ้นในบริบทของ Wasm และเนื่องจากการดำเนินการนี้เกิดขึ้นในผู้ปฏิบัติงาน เทรดหลักจะไม่สามารถบล็อกได้

การปรับปรุงความเป็นส่วนตัวสำหรับ API ของฮาร์ดแวร์

อีกตัวอย่างหนึ่งคือ API ฮาร์ดแวร์ที่ช่วยให้คุณเชื่อมต่อกับอุปกรณ์ HID, serial, USB, บลูทูธ และ NFC แม้ว่า API เหล่านี้บางส่วนจะใช้งานได้มาสักพักแล้ว แต่ก่อนหน้านี้ยังไม่มีวิธีทำให้ลืมอุปกรณ์ที่เคยเชื่อมต่อได้ ตอนนี้เรามีเมธอด forget() สำหรับ API บางรายการแล้ว ตัวอย่างเช่น ต่อไปนี้คือวิธีไม่จำอุปกรณ์ซีเรียลที่เชื่อมต่อไว้ก่อนหน้านี้ ซึ่งจะช่วยเพิ่มความเป็นส่วนตัวของ API

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

การปรับแต่ง API ตำแหน่งหน้าต่างหลายหน้าจอ

ตัวอย่างสุดท้ายคือ API ตำแหน่งหน้าต่างสำหรับหลายหน้าจอ ซึ่งอิงจากความคิดเห็นของนักพัฒนาแอป ป้ายกำกับหน้าจอทั่วไปก่อนหน้านี้ เช่น "Internal Display 1" ถูกแทนที่ด้วยป้ายกำกับที่มีความหมายมากขึ้น เช่น "Built-in Retina Display" เพื่อให้ผู้ใช้เชื่อมโยงป้ายกำกับเหล่านี้กับหน้าจอของการตั้งค่าหลายหน้าจอได้ง่ายขึ้น

บทสรุป

คุณจะเห็นจาก 3 ตัวอย่างนี้ว่า Project Fugu ยังอยู่อีกมากมาย เริ่มใช้ API ของเราต่อไปหรือ ส่งความคิดเห็น เนื่องจากข้อมูลจำเพาะทั้งหมดของ Fugu พัฒนาขึ้นมาในรูปแบบโอเพ่นบน GitHub คุณจึงส่งปัญหาเกี่ยวกับข้อมูลจำเพาะเกี่ยวกับที่เก็บ GitHub ที่เกี่ยวข้องหรือเพิ่มความคิดเห็นเกี่ยวกับปัญหาที่มีอยู่แล้วได้ หากคุณพบข้อบกพร่องในการใช้งาน Chrome หรือพบว่าการใช้งานแตกต่างจากข้อกำหนด ให้รายงานข้อบกพร่องที่ new.crbug.com อย่าลืมใส่รายละเอียดให้มากที่สุดเท่าที่จะทำได้และให้วิธีการที่ง่ายในการทำซ้ำ

และถ้าคุณกังวลเกี่ยวกับการสนับสนุนเบราว์เซอร์ API ของ Fugu จำนวนมากก็ช่วยเพิ่มประสิทธิภาพแบบก้าวหน้าได้เป็นอย่างดี อ่านบทความของฉัน SVGcode: PWA สำหรับแปลงรูปภาพแรสเตอร์เป็นกราฟิกเวกเตอร์ SVG เพื่อหาแรงบันดาลใจ นอกจากนี้ เราจะยังไม่ถือว่างานของเราเสร็จสมบูรณ์จนกว่า API เหล่านี้จะทำงานร่วมกัน และเราจะผลักดันให้มีการปรับมาตรฐาน การทดสอบ และการนำไปใช้โดยเบราว์เซอร์อื่นๆ ต่อไป