אנחנו משיקים עכשיו את Chrome 80, והוא כולל המון תכונות חדשות למפתחים.
יש תמיכה באפשרויות הבאות:
- מודולים בעובדים
- שרשרת אופציונלית ב-JavaScript
- תקופות ניסיון חדשות למקורות
- תכונות שסיימו את תקופת הניסיון בגרסת המקור
- ועוד הרבה יותר.
קוראים לי Pete LePage, ועכשיו נצלול פנימה ונראה מה חדש למפתחים ב-Chrome 80.
מודולים של workers
זמין עכשיו מצב חדש ל-Web Workers – Module Workers – עם יתרונות הארגונומיה והביצועים של מודולים של JavaScript. האפשרות החדשה {type: "module"}
נוספה ל-constructor של Worker, והיא משנה את האופן שבו סקריפטים נטענים ומבוצעים בהתאם ל-<script type="module">
const worker = new Worker('worker.js', {
type: 'module'
});
המעבר למודול JavaScript מאפשר גם להשתמש בייבוא דינמי לקוד של טעינת נתונים בזמן אמת, בלי לחסום את ביצוע ה-worker. פרטים נוספים זמינים בפוסט של Jason Threading the web with module workers ב-web.dev.
שרשור אופציונלי
קריאה של מאפיינים שמוטמעים עמוק באובייקט עלולה לגרום לשגיאות, במיוחד אם יש סיכוי שמשהו לא ייבדק.
// Error prone-version, could throw.
const nameLength = db.user.name.length;
בדיקה של כל ערך לפני שממשיכים יכולה בקלות להפוך להצהרת if
בתצוגת עץ עמוקה, או לדרוש בלוק try
או catch
.
// Less error-prone, but harder to read.
let nameLength;
if (db && db.user && db.user.name)
nameLength = db.user.name.length;
ב-Chrome 80 נוספה תמיכה בתכונה חדשה של JavaScript שנקראת שרשור אופציונלי. כשמשתמשים בשרשור אופציונלי, אם אחד המאפיינים מחזיר null או undefined, במקום להפעיל שגיאה, המערכת פשוט מחזירה את הערך undefined.
// Still checks for errors and is much more readable.
const nameLength = db?.user?.name?.length;
בפוסט Optional Chaining בבלוג של v8 מוסבר בהרחבה על הנושא.
סיום תקופת הניסיון בגרסת המקור
יש שלוש יכולות חדשות שעברנו מהגרסה הזמנית למצב יציב, כך שכל אתר יכול להשתמש בהן בלי אסימון.
סנכרון תקופתי ברקע
האפשרות הראשונה היא סנכרון תקופתי ברקע. האפשרות הזו מסנכרנת נתונים באופן תקופתי ברקע, כך שכשהמשתמש פותח את אפליקציית ה-PWA המותקנת, הוא תמיד מקבל את הנתונים העדכניים ביותר.
בורר אנשי הקשר
ה-API הבא הוא Contact Picker API, ממשק API על פי דרישה שמאפשר למשתמשים לבחור רשומות מרשימת אנשי הקשר שלהם ולשתף פרטים מוגבלים של הרשומות שנבחרו עם אתר אינטרנט.
הוא מאפשר למשתמשים לשתף רק את מה שהם רוצים, מתי שהם רוצים, ועוזר להם להגיע לחברים ולמשפחה שלהם ולהתחבר אליהם בקלות.
הצגת אפליקציות קשורות שהותקנו
לבסוף, השיטה Get Installed Related Apps מאפשרת לאפליקציית האינטרנט לבדוק אם האפליקציה המקורית מותקנת במכשיר של המשתמש.
אחד מהתרחישים לדוגמה הנפוצים ביותר הוא לקבלת החלטה אם לקדם את התקנת אפליקציית ה-PWA, אם האפליקציה המקורית לא מותקנת. לחלופין, יכול להיות שתרצו להשבית פונקציונליות מסוימת באפליקציה אחת אם היא מסופקת על ידי האפליקציה השנייה.
גרסאות מקור חדשות לניסיון
Content indexing API
איך אפשר להודיע למשתמשים על תוכן ששמרתם במטמון באפליקציית ה-PWA? יש כאן בעיה בגילוי. האם הם ידעו לפתוח את האפליקציה? או איזה תוכן זמין?
Content Indexing API הוא גרסת טרום-השקה חדשה של מקור שמאפשרת להוסיף כתובות URL ומטא-נתונים של תוכן שזמין במצב אופליין לאינדקס מקומי, שמנוהל על ידי הדפדפן ונגלה בקלות למשתמש.
const registration = await navigator.serviceWorker.ready;
await registration.index.add({
id: 'article-123',
launchUrl: '/articles/123',
title: 'Article title',
description: 'Amazing article about things!',
icons: [{
src: '/img/article-123.png',
sizes: '64x64',
type: 'image/png',
}],
});
כדי להוסיף משהו לאינדקס, צריך לקבל את רישום ה-service worker, ואז לבצע קריאה ל-index.add
ולספק מטא-נתונים לגבי התוכן.
אחרי שהאינדקס מאוכלס, הוא מוצג באזור ייעודי בדף'הורדות' ב-Chrome ל-Android. פרטים מלאים זמינים בפוסט של Jeff הוספת דפים שפועלים במצב אופליין לאינדקס באמצעות Content Indexing API באתר web.dev.
טריגרים של התראות
התראות הן חלק חיוני ברבות מהאפליקציות. עם זאת, מהימנות ההתראות תלויה ברשת שאליה אתם מחוברים. הפתרון הזה עובד ברוב המקרים, אבל לפעמים הוא נכשל. לדוגמה, אם תזכורת ביומן לא תופיע כי אתם במצב טיסה, יכול להיות שתפספסו אירוע חשוב.
טריגרים להתרעות מאפשרים לתזמן התראות מראש, כך שמערכת ההפעלה תציג את ההתראה בזמן הנכון – גם אם אין חיבור לרשת או שהמכשיר נמצא במצב חיסכון בסוללה.
const swReg = await navigator.serviceWorker.getRegistration();
swReg.showNotification(title, {
tag: tag,
body: "This notification was scheduled 30 seconds ago",
showTrigger: new TimestampTrigger(timestamp + 30 * 1000)
});
כדי לתזמן התראה, צריך לבצע קריאה ל-showNotification
ברישום של ה-service worker. באפשרויות ההתראות, מוסיפים מאפיין showTrigger
עם TimestampTrigger
. כשהזמן יגיע, ההתראה תוצג בדפדפן.
תקופת הניסיון בגרסת המקור אמורה להימשך עד ל-Chrome 83, לכן כדאי לעיין בפוסט של Tom בנושא טריגרים להתרעות ב-web.dev כדי לקבל פרטים מלאים.
גרסאות מקור אחרות לניסיון
יש כמה תכונות אחרות לניסיון בגרסת המקור שזמינות החל מ-Chrome 80:
- Web Serial
- היכולת של אפליקציות PWA להירשם כרכיבי handler של קבצים
- מאפיינים חדשים לבורר אנשי הקשר
רשימה מלאה של התכונות שזמינות בתקופת הניסיון במקור
ועוד
כמובן, יש עוד הרבה דברים!
- עכשיו אפשר לקשר ישירות לקטע טקסט בדף באמצעות
#:~:text=something
. Chrome יגלול למקרה הראשון של מקטע הטקסט הזה וידגיש אותו. לדוגמה: https://en.wikipedia.org/wiki/Rickrolling#:~:text=New%20York - הגדרת
display: minimal-ui
באפליקציית PWA למחשב מוסיפה לחצן 'הקודם' ו'טעינה מחדש' לסרגל הכותרת של אפליקציית ה-PWA המותקנת. - בנוסף, עכשיו יש ב-Chrome תמיכה בשימוש בתמונות SVG בתור סמלי favicon.
קריאה נוספת
הרשימה הזו כוללת רק חלק מהנקודות העיקריות. בקישורים הבאים מפורטים שינויים נוספים בגרסה 80 של Chrome.
- מה חדש ב-Chrome DevTools (גרסה 80)
- תכונות שהווצאו משימוש והוסרו מ-Chrome 80
- עדכונים ב-ChromeStatus.com לגבי Chrome 80
- מה חדש ב-JavaScript בגרסה 80 של Chrome
- רשימת השינויים במאגר המקור של Chromium
להרשמה
רוצים להתעדכן בסרטונים שלנו? נרשמים לערוץ YouTube למפתחי Chrome, ומקבלים התראה באימייל בכל פעם שאנחנו משיקים סרטון חדש.
קוראים לי פיט לייפ (Pete LePage), ואחרי שגרסת Chrome 81 תפורסם, אספר לכם מה חדש ב-Chrome.