Firebase Hosting آدرسهای اینترنتی (URL) سایت شما را که با /__ شروع میشوند، رزرو میکند. این فضای نام رزرو شده، استفاده از سایر محصولات فایربیس را به همراه Firebase Hosting آسانتر میکند.
این URLهای رزرو شده هم هنگام استقرار در Firebase ( firebase deploy ) و هم هنگام اجرای برنامه روی یک سرور محلی ( firebase serve ) در دسترس هستند.
اسکریپتهایی برای URLهای رزرو شده اضافه کنید
از آنجا که Firebase Hosting هنگام استقرار بر روی HTTP/2 ارائه میشود، میتوانید با بارگیری فایلها از همان مبدا، عملکرد را افزایش دهید. Firebase Hosting نسخه ۸ از 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، مدیریت چندین محیط (مانند توسعه، مرحلهبندی و تولید) را از یک کدبیس واحد آسان میکند. با تکیه بر 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 JavaScript Firebase برای پروژه فعال Firebase پیکربندی کرده و SDK را مقداردهی اولیه میکند.
اگر ترجیح میدهید خودتان مقداردهی اولیه را کنترل کنید، مقادیر پیکربندی Firebase به صورت JSON نیز موجود است:
fetch('/__/firebase/init.json').then(async response => {
firebase.initializeApp(await response.json());
});
SDK های JS فایربیس موجود (از URL های Hosting رزرو شده)
| محصول فایربیس | مرجع کتابخانه (URL رزرو شده) |
|---|---|
| هسته فایربیس (الزامی) | <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) | <script src="/__/firebase/8.10.1/firebase.js"></script> |
کمککنندههای احراز هویت
Firebase Authentication از فضای نام رزرو شده برای ارائه جاوا اسکریپت و HTML ویژه برای تکمیل احراز هویت با ارائه دهندگان از طریق OAuth استفاده میکند. این امر به هر پروژه فایربیس اجازه میدهد تا یک زیر دامنه منحصر به فرد فایربیس داشته باشد و امنیت Firebase Authentication را افزایش دهد.
علاوه بر این، این به شما امکان میدهد از دامنه سفارشی خود برای گزینه authDomain از firebase.initializeApp() استفاده کنید. اگر یک دامنه سفارشی برای Firebase Hosting پیکربندی کنید، میتوانید آن دامنه سفارشی را (به جای زیر دامنه web.app یا firebaseapp.com خود) هنگام مقداردهی اولیه SDK های Firebase نیز مشخص کنید. برای جزئیات بیشتر در مورد استفاده از دامنه سفارشی، به بهترین شیوههای استفاده از signInWithRedirect مراجعه کنید.
URL های رزرو شده و سرویس ورکرها
اگر در حال ساخت یک برنامه وب پیشرونده (PWA) هستید، میتوانید یک سرویس ورکر ایجاد کنید که دارای یک «جایگزین ناوبری» باشد و اگر یک URL خاص با لیستی از موارد از پیش ذخیره شده مطابقت نداشته باشد، آن را به طور پیشفرض رندر کند.
اگر از کتابخانه sw-precache استفاده میکنید، میتوانید یک تنظیم لیست سفید پشتیبان ناوبری اضافه کنید که فضای نام رزرو شده را حذف کند:
{
navigateFallbackWhitelist: [/^(?!\/__).*/]
}
به طور کلی، فقط به یاد داشته باشید که فضای نام دابل-آندرلاین برای استفاده در فایربیس رزرو شده است و شما نباید این درخواستها را در سرویس ورکر خود رهگیری کنید.