אחת מהמטרות של צוות 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"
, כדי למשתמשים יהיה קל יותר לשייך את התוויות האלה למסכים של ההגדרה שלהם לריבוי מסכים.
מסקנות
כפי שאפשר לראות כבר מתוך שלוש הדוגמאות האלה, Project Fugu רחוק מלהסתיים. להמשיך להשתמש בממשקי ה-API שלנו או להתחיל להשתמש בהם ולשלוח משוב. מאחר שכל המפרטים של Fugu מפותחים באופן פתוח ב-GitHub, תוכלו לשלוח דיווח על בעיה במפרט במאגר GitHub המתאים או להוסיף את דעתכם לבעיה קיימת. אם מצאתם באג בהטמעה של Chrome, או אם גיליתם שההטמעה שונה מהמפרט, תוכלו לדווח על הבאג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים ולספק הוראות פשוטות לשחזור הבעיה.
אם אתם מודאגים לגבי תמיכה בדפדפנים, הרבה ממשקי API של Fugu מתאימים לשיפורים פרוגרסיביים. למקורות השראה, אפשר לעיין במאמר שלי SVGcode: אפליקציית PWA להמרת תמונות רסטר לגרפיקת וקטורים מסוג SVG. בנוסף, אנחנו לא מסיימים את המשימות שלנו עד שממשקי ה-API האלה יהיו ניתנים לפעולה הדדית, ונמשיך לדחוף לסטנדרטיזציה, לבדיקות ולהטמעה שלהם בדפדפנים אחרים.