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:
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 đó.
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, Bluetooth và NFC. 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.