טעינת ערכות Firebase SDK מכתובות URL שמורות

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 אוטומטית מאפשרת לנהל בקלות סביבות מרובות (כמו dev, Staging ו-Production) באמצעות קוד בסיס אחד. בעזרת כתובת ה-URL Hosting ששמורה, אפשר לפרוס את אותו קוד במספר פרויקטים ב-Firebase.

בנוסף לאירוח ערכות ה-SDK עצמן, מרחב השמות ששמור מספק גם את כל ההגדרות הנדרשות כדי לאתחל את ה-SDK לפרויקט Firebase שמשויך לאתר Hosting. ההגדרה של Firebase וההפעלה של ה-SDK ניתנים באמצעות סקריפט שאפשר לכלול ישירות:

<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>

כשפורסים ב-Firebase או בודקים את האפליקציה באופן מקומי, הסקריפט מגדיר באופן אוטומטי את ה-SDK של Firebase JavaScript לפרויקט הפעיל ב-Firebase ומפעיל את ה-SDK.

אם אתם מעדיפים לשלוט בהפעלה בעצמכם, ערכי התצורה של Firebase זמינים גם בפורמט JSON:

fetch('/__/firebase/init.json').then(async response => {
  firebase.initializeApp(await response.json());
});

ערכות Firebase JS SDK זמינות (מ-URL Hosting שמור)

כתובות URL
מוצר 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 Workers שמורים

אם אתם מפתחים אפליקציית Progressive Web App‏ (PWA), תוכלו ליצור קובץ שירות (service worker) עם 'חלופה לניווט', שיציג כתובת URL ספציפית כברירת מחדל אם היא לא תואמת לרשימה של פריטים שנשמרו במטמון מראש.

אם אתם משתמשים בספרייה sw-precache, תוכלו להוסיף הגדרה של רשימת לבן לגיבוי לניווט, שלא כוללת את מרחב השמות השמור:

{
  navigateFallbackWhitelist: [/^(?!\/__).*/]
}

באופן כללי, חשוב לזכור שמרחב השמות עם הקווים התחתונים הכפולים מיועד לשימוש ב-Firebase, ואסור ליירט את הבקשות האלה ב-service worker.