تحتفظ خدمة 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
<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 إدارة بيئات متعددة (مثل بيئات التطوير والتنظيم والإنتاج) من قاعدة رموز برمجية واحدة. من خلال الاعتماد على عنوان 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 المتاحة (من عناوين 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 installations | <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) عند تهيئة حِزم Firebase
SDK. لمزيد من التفاصيل حول استخدام نطاق مخصّص، يُرجى الاطّلاع على
أفضل الممارسات لاستخدام signInWithRedirect.
عناوين URL المحجوزة ومشغّلو الخدمات
إذا كنت تنشئ "تطبيق ويب تقدّميًا"، يمكنك إنشاء مشغّل خدمات يتضمّن "إجراء احتياطيًا للانتقال" ويعرض عنوان URL محدّدًا تلقائيًا إذا لم يتطابق مع قائمة بالعناصر المخزّنة مؤقتًا.
إذا كنت تستخدم مكتبة sw-precache ، يمكنك إضافة إعداد قائمة بيضاء للإجراءات الاحتياطية للانتقال يستبعد مساحة الاسم المحجوزة:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
بشكلٍ عام، تذكَّر أنّ مساحة الاسم التي تتضمّن شرطتَين سفليتَين محجوزة لاستخدام Firebase ويجب عدم اعتراض هذه الطلبات في مشغّل الخدمات.