Dự án Fugu có "hoàn thành" không?

Một trong những mục tiêu của nhóm Project Fugu là giúp nhà phát triển có thể làm mọi thứ trên web mà các ứng dụng dành riêng cho nền tảng có thể làm được. Nhóm này đã bận rộn thêm các tính năng còn thiếu mà nhà phát triển web cần để thu hẹp khoảng cách ứng dụng này. Nếu bạn không tin tôi, hãy xem phần "Đã vận chuyển" của trình theo dõi API Fugu. Sau đây là 55 API đã được phân phối, theo thứ tự từ ít được phân phối nhất đến mới nhất:

Tên API Đã vận chuyển
API Web BluetoothChrome 56
WebUSB APIChrome 61
Mục tiêu chia sẻ trên webChrome 71
Web Share API cấp 2Chrome 75
Bảng nhớ tạm không đồng bộ: Đọc và ghi hình ảnhChrome 76
Mục tiêu chia sẻ trên web cấp 2Chrome 76
Nhập gợi ý phímChrome 77
Mở rộng hạn mức bộ nhớChrome 78
API Nhận ứng dụng có liên quan đã cài đặtChrome 80
Đồng bộ hoá định kỳ ở chế độ nềnChrome 80
desktop-pwas: Hỗ trợ chế độ hiển thị "minimal-ui"Chrome 80
Bộ mã hoá và giải mã nénChrome 80
API Danh bạChrome 80
API Gán huy hiệuChrome 81
Cho phép sử dụng API huy hiệu từ một worker dịch vụ thông qua tính năng đẩyChrome 81
API Phát hiện mã vạchChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: luồng có thể chuyểnChrome 85
Lối tắt ứng dụngChrome 85
Quyền truy cập vào hệ thống tệpChrome 86
hỗ trợ văn bản/html cho API bảng nhớ tạm không đồng bộChrome 86
Hỗ trợ xoay/nghiêng cho Máy ảnhChrome 87
FUGU Triển khai tính năng ghi lại đầu ra âm thanh của hệ thống và ứng dụng vào tai nghe và loa Chrome 88
PointerLock unadjustedMovementChrome 88
Tạo công cụ chọn Ảnh/Video tương tự như Công cụ chọn ảnh trên AndroidChrome 88
Tích hợp tính năng Chia sẻ trên web (navigator.share) với Windows 10Chrome 88
NFC trên webChrome 89
WebHID (Thiết bị giao diện người dùng)Chrome 89
Web Serial APIChrome 89
Chia sẻ trên web trên máy tínhChrome 89
API Nhận dạng chữ viết tayChrome 90
Cấu hình được quản lý cho Ứng dụng webChrome 91
Chạy PWA trên tính năng Đăng nhập vào hệ điều hànhChrome 91
WebCodecsChrome 93
Phát hiện trạng thái rảnhChrome 94
EyeDropper APIChrome 95
Trình đơn lối tắt ứng dụng cho PWA trên macOS và LinuxChrome 96
Đăng ký trình xử lý giao thức URL cho PWA Chrome 96
WebTransportChrome 97
Bảng nhớ tạm: Việc dán hình ảnh dành cho màn hình Retina sẽ làm mất siêu dữ liệu pHYs.Chrome 98
Người dùng có thể gỡ cài đặt PWA giống như cách gỡ cài đặt "ứng dụng thực"Chrome 99
NFC trên web: NDEFReader makeReadOnly()Chrome 100
Vị trí cửa sổ trên nhiều màn hìnhChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Kiến thức cơ bản về Chrome
Hành vi sameObject của USB trên webKiến thức cơ bản về Chrome
Lớp phủ điều khiển cửa sổ cho ứng dụng web đã cài đặt trên máy tínhChrome 102
Xử lý tệpChrome 102
chrome.management API không thể tương tác với các ứng dụng PWA nữaChrome 102
SerialPort forget()Chrome 103
Quyền truy cập phông chữ trên máyChrome 103
Yêu cầu Fugu: Lối tắt ứng dụng động (Lối tắt phiên bản 2)Chrome 104
Các định dạng tuỳ chỉnh trên web cho API Bảng nhớ tạm không đồng bộChrome 104
Tất cả API Fugu đã được xuất xưởng cho đến thời điểm này.

Danh sách này còn dài và chúng tôi còn nhiều việc phải làm. Vẫn còn một số API và tính năng đang trong giai đoạn thử nghiệm cho nhà phát triển (tức là đã được triển khai nhưng nằm sau một cờ tính năng), một số API và tính năng chúng tôi đã bắt đầu triển khai và nhiều API và tính năng đang được xem xét. Như bạn có thể thấy, đây chưa phải là lúc để ngả lưng và nói rằng chúng ta đã hoàn tất.

Phương thức tệp đồng bộ cho hệ thống tệp riêng tư gốc

Ngược lại, thay vì tuyên bố rằng nỗ lực của chúng ta đã hoàn tất, chúng ta mới chỉ bắt đầu. Ví dụ: hãy xem xét biểu đồ bên dưới cho thấy mức tăng trưởng tương đối về mức sử dụng tăng vọt của phương thức navigator.storage.getDirectory(), được dùng làm điểm truy cập vào hệ thống tệp riêng tư gốc (OPFS). Ví dụ: phương thức này được dùng cho nhu cầu bộ nhớ hiệu suất cao của Photoshop và là phương thức mà cộng đồng bộ nhớ rất quan tâm kể từ khi Web SQL bắt đầu ngừng hoạt động và thậm chí trước đó.

Biểu đồ cho thấy mức sử dụng tương đối tăng vọt của phương thức navigator.storage.getDirectory.

Giờ đây, khi có nhiều người sử dụng OPFS hơn, các yêu cầu bổ sung đã xuất hiện. Ví dụ: cần có một nhóm phương thức tệp đồng bộ hoá hoàn toàn trong ngữ cảnh worker (xem whatwg/fs#7 để biết thông tin cơ bản). Mặc dù các API web mới thường không đồng bộ, nhưng việc có các phương thức đồng bộ sẽ giúp việc xử lý OPFS trở nên đơn giản hơn nhiều trong ngữ cảnh Wasm. Vì việc này đang diễn ra trong một worker, nên luồng chính không thể bị chặn.

Cải tiến về quyền riêng tư cho API phần cứng

Một ví dụ khác là API phần cứng cho phép bạn kết nối với các thiết bị HID, nối tiếp, USB, BluetoothNFC. Mặc dù một số API này đã xuất hiện được một thời gian, nhưng cho đến gần đây, bạn vẫn chưa có cách nào để xoá một thiết bị mà bạn từng kết nối. Giờ đây, bạn có thể làm được điều này nhờ các phương thức forget() cho một số API. Ví dụ: sau đây là cách xoá một thiết bị nối tiếp đã kết nối trước đó, giúp cải thiện quyền riêng tư của API.

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

Các điểm tinh chỉnh cho API Vị trí cửa sổ nhiều màn hình

Ví dụ cuối cùng là API vị trí cửa sổ nhiều màn hình. Dựa trên ý kiến phản hồi của nhà phát triển, các nhãn màn hình chung trước đây như "Internal Display 1" đã được thay thế bằng các nhãn có ý nghĩa hơn như "Built-in Retina Display" để người dùng có thể dễ dàng liên kết các nhãn này với màn hình của chế độ thiết lập nhiều màn hình.

Kết luận

Như bạn có thể thấy qua ba ví dụ này, Project Fugu vẫn còn rất nhiều việc phải làm. Tiếp tục hoặc bắt đầu sử dụng API của chúng tôi và gửi ý kiến phản hồi. Vì tất cả thông số kỹ thuật của Fugu đều được phát triển công khai trên GitHub, nên bạn có thể gửi vấn đề về thông số kỹ thuật trên kho lưu trữ GitHub tương ứng hoặc thêm ý kiến của mình vào một vấn đề hiện có. Nếu bạn phát hiện lỗi trong quá trình triển khai của Chrome hoặc phát hiện thấy cách triển khai khác với thông số kỹ thuật, hãy gửi lỗi tại new.crbug.com. Hãy nhớ cung cấp càng nhiều thông tin chi tiết càng tốt và đưa ra hướng dẫn đơn giản để tái hiện lỗi.

Và nếu bạn lo ngại về khả năng hỗ trợ trình duyệt, thì nhiều API Fugu sẽ mang lại những điểm cải tiến vượt trội. Hãy xem bài viết của tôi SVGcode: một PWA để chuyển đổi hình ảnh đường quét thành đồ hoạ vectơ SVG để lấy cảm hứng. Chúng tôi cũng không coi công việc của mình là hoàn tất cho đến khi các API này có thể tương tác với nhau. Chúng tôi sẽ tiếp tục thúc đẩy việc chuẩn hoá, thử nghiệm và áp dụng thêm cho các trình duyệt khác.