קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ אנגולר ♦ מדריך PWA באנגולר

מדריך PWA באנגולר

עידן יצחקי 24 ביולי 2021 אין תגובות

מה Progressive Web Apps יכול לתת לנו?

בתצורה הכי בסיסית שלו (שזה מה שנעשה כאן), הוא יאפשר לנו להתקין את האתר שלנו כמו אפליקציה על הטלפון.

היתרונות הם:

  1. גישה יותר נוחה למשתמש מהטלפון או מהמחשב לאתר שלנו
  2. אם האתר רספונסיבי אז אין צורך לבנות אפליקציה בנפרד לאתר
  3. כחלק מהמנגנון, האתר שלנו לאחר התקנה יבצע בדיקות לבד מול האתר שלנו ברשת ואם יש משהו חדש הוא יעדכן את עצמו כך שגם אם נהיה במקום ללא קליטה עדיין המשתמש יוכל לגלוש לאתר שלנו
  4. אם כבר אמרנו שהאפליקציה מבצעת עדכון לבד מהרשת, זה גם אומר שהאתר יעלה הרבה יותר מהר

יש עוד מספר יתרונות שלא נדון בהם כאן כמו שליחת הודעה למשתמש ב-PUSH, שימוש במצלמה של הטלפון….

בנגולר יש פקודה שמיצרת את הכל ולכן אין צורך ליצור ידנית, ההסבר כאן הוא למי שרוצה ליצר לבד, במידה שאתם לא רוצים ליצור לבד, ניתן לדלג לסוף ולהריץ את הפקודה שכתובה בסוף הפוסט (היא תעשה כמעט את הכל 😎)

ניצור קובץ בספרית SRC בשם manifest.webmanifest אפשר גם בשם manifest.json

{
    "name": "my-web-app",
    "short_name": "my-app",
    "theme_color": "#cbcbcb",
    "background_color": "#cdcdcd",
    "description": "this is description for your app",
    "dir": "ltr",
    "lang": "en-US",
    "display": "standalone",
    "scope": "./",
    "start_url": "./",
    "icons": [{
            "src": "assets/icons/icon-72x72.png",
            "sizes": "72x72",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-96x96.png",
            "sizes": "96x96",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-128x128.png",
            "sizes": "128x128",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-144x144.png",
            "sizes": "144x144",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-152x152.png",
            "sizes": "152x152",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-192x192.png",
            "sizes": "192x192",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-384x384.png",
            "sizes": "384x384",
            "type": "image/png",
            "purpose": "maskable any"
        },
        {
            "src": "assets/icons/icon-512x512.png",
            "sizes": "512x512",
            "type": "image/png",
            "purpose": "maskable any"
        }
    ]
}

בקובץ הזה אפשר כבר לראות מספר דברים בולטים:

  1. צריך כ-8 אייקונים עבור גדלים שונים של מסכים, בכל אייקון יש לספק את הגודל שלו, הסוג שלו, המיקום שלו ולטובת אנדרואיד יש לספק גם purpose: maskable any, זה נועד כדי שהמכשיר יעגל פינות או יעגל לגמרי את האייקון.
  2. יש לציין לפחות אחד מהמאפיינים הבאים: name/short_name. במידה שמספקים את שניהם אז השם הקצר יופיע כאשר מעלים את האפליקציה, בדף הבית. השם הרגיל יופיע כאשר מתקינים את האפליקציה.
  3. start_url נדרש כדי להודיע לאפליקציה איפה להתחיל כשהיא עולה, אם מסופק מיקום ספציפי אז במקום להתחיל בדף שהמשתמש היה בו אחרון היא תמיד תעלה בדף הספציפי שכתוב.
  4. background_color קובע את הצבע של האפליקציה כשהיא עולה ולפני שהאתר מופיע.
  5. display קובע איך המסגרת/חלון של האתר יראה, מקבל fullscreen, standalone, minimal-ui, browser. במקרה שלנו, נשתמש ב-standalone, זה יתן מראה של אפליקציה ללא פס ניווט עליון וללא כפתורים מיותרים מסביב לדף שלנו.

יש עוד מספר פרמטרים, אבל אני חושב שהם די ברורים על פי השם שלהם ולכן לא נתעכב עליהם.

הצעד הבא: להפעיל את הקובץ

במידה שהיינו בפרויקט של דפים סטטים, אז היינו צריכים לקרוא לקובץ בכל דף שאנחנו רוצים לטעון PWA, אבל אנחנו באנגולר ולכן אנחנו צריכים לעשות את הקריאה רק פעם אחת ב-index .

<head>
    <meta charset="utf-8">
    <title>Webration</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
    <link rel="manifest" href="manifest.webmanifest">
    <meta name="theme-color" content="#cbcbcb">
</head>

שורה מספר 7 מבצעת את הקריאה לקובץ.

תאימות ל-IOS צריך להוסיף לינקים לאייקונים ב-head

<head>
    <meta charset="utf-8">
    <title>my-web-app</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="description for the website">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
    <!-- ios support -->
    <link rel="apple-touch-icon" sizes="72x72" href="assets/icons/icon-72x72.png" />
    <link rel="apple-touch-icon" sizes="96x96" href="assets/icons/icon-96x96.png" />
    <link rel="apple-touch-icon" sizes="128x128" href="assets/icons/icon-128x128.png" />
    <link rel="apple-touch-icon" sizes="144x144" href="assets/icons/icon-144x144.png" />
    <link rel="apple-touch-icon" sizes="152x152" href="assets/icons/icon-152x152.png" />
    <link rel="apple-touch-icon" sizes="192x192" href="assets/icons/icon-192x192.png" />
    <link rel="apple-touch-icon" sizes="384x384" href="assets/icons/icon-384x384.png" />
    <link rel="apple-touch-icon" sizes="512x512" href="assets/icons/icon-512x512.png" />
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <link rel="manifest" href="manifest.webmanifest">
    <meta name="theme-color" content="#cbcbcb">
</head>

כך יראה ה-head לאחר השינוי.

עכשיו להוספה של ה-service worker (ואת כל שאר הדברים שדיברנו עליהם)

על יצירה של SW ידנית נדבר בהזדמנות אחרת.

ביצירה האוטומטית הוא נראה כך:

{
  "$schema": "./node_modules/@angular/service-worker/config/schema.json",
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/manifest.webmanifest",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }
  ]
}

באנגולר זה ממש קל ופשוט (כמו שאנחנו אוהבים, מישהו אחר עשה את העבודה הקשה בשבילנו)

בפרויקט נריץ בטרמינל את הפקודה הבאה:

ng add @angular/pwa --project *project-name*

מה שיקרה הוא:

  1. ב-assets יתווספו כל האייקונים שדיברנו עליהם (תצטרכו להחליף אותם לשלכם)
  2. ברמה הכי גבוהה יתווסף קובץ ngsw-config.json שהוא ה-service worker ושם אפשר לעשות מספר שינויים כדי להחליט על זמן העידכון מידע / תדירות וכו'.
  3. app.module.ts יתעדכן גם הוא ואין צורך לגעת.
  4. במידה שלא עשיתם קובץ manifest.webmanifest אז גם הוא יופיע בתוך ספריית APP.
  5. גם ב-INDEX יתווסף הקישור לקובץ.

לבסוף, הייתי ממליץ לאחר עליה של האתר לרשת עם PWA לבדוק שאכן הכל עובד תקין.

יש לגלוש לאתר, ללחוץ על F12, לעבור ללשונית application, בצד ימין אתם תיראו manifast, service worker .

תלחצו עליהם ותבדקו שאין שגיאות או בעיות בצד שמאל.

פוסטים קשורים:

תמונת אווירה של הרכבת קוביותרכיבים חכמים ורכיבים טיפשים באנגולר מדריך אנגולגר טופס ריאקטיבי שיעור שמינימדריך אנגולר | reactive forms – ולידציות וחיווי בUI סופר מחלףריבוי מודולים באנגולר מדריך אנגולגר טופס ריאקטיבי שיעור תשיעי ואחרוןמדריך אנגולר | סיכום מיני קורס אנגולר reactive forms
מדריך אנגולר

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד
דילוג לתוכן
פתח סרגל נגישות כלי נגישות

כלי נגישות

  • הגדל טקסטהגדל טקסט
  • הקטן טקסטהקטן טקסט
  • גווני אפורגווני אפור
  • ניגודיות גבוההניגודיות גבוהה
  • ניגודיות הפוכהניגודיות הפוכה
  • רקע בהיררקע בהיר
  • הדגשת קישוריםהדגשת קישורים
  • פונט קריאפונט קריא
  • איפוס איפוס