אחת מהמטרות של צוות Project Fugu היא לאפשר למפתחים לבצע באינטרנט כל פעולה שאפשר לבצע באפליקציות ספציפיות לפלטפורמה. לכן, הצוות עבד קשה כדי להוסיף תכונות חסרות שיעזרו למפתחי אינטרנט למלא את הפער הזה בין אפליקציות לאתרים. אם אתם לא מאמינים לי, פשוט עיינו בקטע 'נשלח' במעקב אחר Fugu API. אלה 55 ממשקי ה-API ששולחים, לפי הסדר מהממשק הישן ביותר לממשק החדש ביותר:
זו רשימה ארוכה, ויש לנו עוד דברים על הפרק. עדיין יש כמה ממשקי API ותכונות שנמצאים כרגע בגרסת ניסיון למפתחים (כלומר, הם הוחלו אבל מוסתרים מאחורי דגל תכונה), חלקם התחלנו לעבוד עליהם ורבים בבדיקה. כפי שאפשר לראות, זה לא הזמן להירגע ולומר שסיימנו.
שיטות קבצים סינכרוניות למערכת הקבצים הפרטית של המקור
להפך, במקום להכריז על סיום המאמצים שלנו, אנחנו רק מתחילים. לדוגמה, בתרשים הבא מוצג עלייה חדה בשיעור השימוש היחסי בשיטה navigator.storage.getDirectory()
, שמשמשת כנקודת כניסה למערכת הקבצים הפרטית של המקור (OPFS). השיטה הזו משמשת, למשל, לצורכי אחסון בעל ביצועים גבוהים ב-Photoshop, וקהילת האחסון מתעניינת מאוד בה מאז תחילת ההוצאה משימוש של Web SQL, ואפילו לפני כן.
עכשיו, כשיותר אנשים משתמשים ב-OPFS, נוספו דרישות. לדוגמה, הצורך בקבוצה של שיטות קובץ שתומכות בסנכרון מלא בהקשר של עובד (למידע נוסף, ראו whatwg/fs#7). בדרך כלל, ממשקי ה-API החדשים לא מבוססים על אירועים (asynchronous), אבל שימוש בשיטות אסינכרניות יעזור לכם לעבוד עם OPFS בצורה הרבה יותר פשוטה בהקשר של Wasm. מכיוון שהפעולה הזו מתבצעת ב-worker, לא ניתן לחסום את ה-thread הראשי.
שיפורים בפרטיות של ממשקי ה-API לחומרה
דוגמה נוספת היא ממשקי ה-API של החומרה שמאפשרים להתחבר למכשירי HID, טוריים, USB, Bluetooth ו-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 להצגת מודעות בחלונות במסכים מרובים
דוגמה אחרונה היא Multi-Screen Window Placement API, שבו על סמך משוב מהמפתחים, תוויות המסך הכלליות הקודמות כמו "Internal Display 1"
הוחלפו בתוויות בעלות משמעות רבה יותר כמו "Built-in Retina Display"
, כדי למשתמשים יהיה קל יותר לשייך את התוויות האלה למסכים של ההגדרה שלהם לריבוי מסכים.
מסקנות
כפי שאפשר לראות רק משלושת הדוגמאות האלה, פרויקט Fugu רחוק מלהסתיים. להמשיך להשתמש בממשקי ה-API שלנו או להתחיל להשתמש בהם ולשלוח משוב. מאחר שכל המפרטים של Fugu מפותחים באופן פתוח ב-GitHub, תוכלו לשלוח דיווח על בעיה במפרט במאגר GitHub המתאים או להוסיף את דעתכם לבעיה קיימת. אם מצאתם באג בהטמעה של Chrome, או אם גיליתם שההטמעה שונה מהמפרט, תוכלו לדווח על הבאג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים ולספק הוראות פשוטות לשחזור הבעיה.
אם אתם מודאגים לגבי תמיכה בדפדפנים, הרבה ממשקי API של Fugu מתאימים לשיפורים פרוגרסיביים. למקורות השראה, אפשר לעיין במאמר שלי SVGcode: אפליקציית PWA להמרת תמונות רסטר לגרפיקת וקטורים מסוג SVG. אנחנו גם לא מתייחסים למשימות שלנו כאל סיום עד שממשקי ה-API האלה יהיו ניתנים לפעולה הדדית, ונמשיך לדחוף לסטנדרטיזציה, לבדיקות ולהטמעה שלהם בדפדפנים אחרים.