Firebase Hosting כתובות URL באתר שמתחילות ב-/__
. מרחב השמות השמור הזה מאפשר להשתמש בקלות רבה יותר במוצרים אחרים של Firebase יחד עם Firebase Hosting.
כתובות ה-URL השמורות האלה זמינות גם כשפורסים ל-Firebase (firebase deploy
) וגם כשמריצים את האפליקציה בשרת מקומי (firebase serve
).
הוספת סקריפטים לכתובות URL שמורות
מכיוון ש-Firebase Hosting מוגש דרך HTTP/2 כשפורסים אותו, אפשר לשפר את הביצועים על ידי טעינת קבצים מאותו מקור. Firebase Hosting מציג את גרסה 8 של Firebase JavaScript SDK מכתובות URL מיוחדות שמעוצבות כך:
/__/firebase/JS_SDK_VERSION/FIREBASE_SDK_NAME.js
מומלץ מאוד לטעון רק את הספריות שבהן אתם משתמשים באפליקציה. לדוגמה, כדי לכלול רק את Authentication ואת Cloud Firestore, מוסיפים את הסקריפטים הבאים לחלק התחתון של התג <body>
, אבל לפני שמשתמשים בשירותי Firebase:
<body>
<!-- Insert these scripts at the bottom of the HTML, but before you use any Firebase services -->
<!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
<script src="/__/firebase/8.10.1/firebase-app.js"></script>
<!-- Add Firebase products that you want to use -->
<script src="/__/firebase/8.10.1/firebase-auth.js"></script>
<script src="/__/firebase/8.10.1/firebase-firestore.js"></script>
</body>
הגדרה אוטומטית של SDK
ההגדרה האוטומטית של ה-SDK מאפשרת לנהל בקלות סביבות מרובות (כמו פיתוח, Staging וייצור) מבסיס קוד יחיד. אם משתמשים בכתובת ה-URL השמורה Hosting, אפשר לפרוס את אותו קוד למספר פרויקטים של Firebase.
בנוסף לאירוח של ערכות ה-SDK עצמן, מרחב השמות השמור מספק גם את כל ההגדרות שנדרשות לאתחול ה-SDK עבור פרויקט Firebase שמשויך לאתר Hosting. ההגדרה הזו של Firebase וההפעלה של ה-SDK מסופקות על ידי סקריפט שאפשר לכלול ישירות:
<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>
כשפורסים ל-Firebase או בודקים את האפליקציה באופן מקומי, הסקריפט הזה מגדיר באופן אוטומטי את Firebase JavaScript SDK עבור פרויקט Firebase הפעיל ומפעיל את ה-SDK.
אם אתם מעדיפים לשלוט בעצמכם באתחול, ערכי ההגדרה של Firebase זמינים גם בפורמט JSON:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
ערכות Firebase JS SDK זמינות (מכתובות URL שמורות Hosting)
מוצר Firebase | הפניה לספרייה (כתובת URL שמורה) |
---|---|
Firebase core (חובה) |
<script src="/__/firebase/8.10.1/firebase-app.js"></script> |
Analytics | <script src="/__/firebase/8.10.1/firebase-analytics.js"></script> |
App Check | <script src="/__/firebase/8.10.1/firebase-app-check.js"></script> |
Authentication | <script src="/__/firebase/8.10.1/firebase-auth.js"></script> |
Cloud Firestore | <script src="/__/firebase/8.10.1/firebase-firestore.js"></script> |
Cloud Functions for Firebase Client SDK | <script src="/__/firebase/8.10.1/firebase-functions.js"></script> |
Firebase התקנות | <script src="/__/firebase/8.10.1/firebase-installations.js"></script> |
Cloud Messaging | <script src="/__/firebase/8.10.1/firebase-messaging.js"></script> כדי ליהנות מחוויה אופטימלית בשימוש ב-Cloud Messaging, כדאי גם להוסיף את Firebase SDK ל-Analytics. |
Cloud Storage | <script src="/__/firebase/8.10.1/firebase-storage.js"></script> |
Performance Monitoring
(גרסת בטא) |
<script src="/__/firebase/8.10.1/firebase-performance.js"></script> |
Realtime Database | <script src="/__/firebase/8.10.1/firebase-database.js"></script> |
Remote Config
(גרסת בטא) |
<script src="/__/firebase/8.10.1/firebase-remote-config.js"></script> כדי ליהנות מחוויה אופטימלית בשימוש ב-Remote Config, כדאי גם להוסיף את Firebase SDK ל-Analytics. |
Firebase JavaScript SDK (כל ה-SDK) |
<script src="/__/firebase/8.10.1/firebase.js"></script> |
עוזרים לאימות
Firebase Authentication משתמש במרחב השמות השמור כדי לספק JavaScript ו-HTML מיוחדים להשלמת האימות אצל ספקי זהויות באמצעות OAuth. כך לכל פרויקט ב-Firebase יש תת-דומיין ייחודי ב-Firebase, מה שמגביר את האבטחה של Firebase Authentication.
בנוסף, תוכלו להשתמש בדומיין מותאם אישית משלכם באפשרות authDomain
של firebase.initializeApp()
. אם מגדירים דומיין בהתאמה אישית ל-Firebase Hosting, אפשר גם לציין את הדומיין המותאם אישית הזה (במקום תת-הדומיין web.app
או firebaseapp.com
) כשמפעילים את ערכות ה-SDK של Firebase. פרטים נוספים על שימוש בדומיין מותאם אישית מופיעים במאמר בנושא שיטות מומלצות לשימוש ב-signInWithRedirect.
כתובות URL שמורות וקובצי שירות (service worker)
אם אתם בונים Progressive Web App (PWA), יכול להיות שתיצרו קובץ שירות (service worker) עם 'גיבוי לניווט' שמעבד כתובת URL ספציפית כברירת מחדל אם היא לא תואמת לרשימה של פריטים ששמורים במטמון מראש.
אם אתם משתמשים בספרייה sw-precache, אתם יכולים להוסיף הגדרת רשימת היתרים של חזרה לניווט שמוציאה את מרחב השמות השמור:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
באופן כללי, חשוב לזכור שמרחב השמות עם הקו התחתון הכפול שמור לשימוש ב-Firebase, ושאסור ליירט את הבקשות האלה ב-service worker.