با استفاده از Firebase CLI، میتوانید برنامههای وب Next.js خود را در Firebase مستقر کرده و با Firebase Hosting به آنها سرویس دهید.
پس از مقداردهی اولیه Firebase، میتوانید محتوای استاتیک را با دستور استاندارد Deployment ارائه دهید:
firebase deploy
اگر برنامه شما شامل منطق پویای سمت سرور باشد، رابط خط فرمان (CLI) آن منطق را در Cloud Functions for Firebase مستقر میکند. میتوانید برنامه مستقر شده خود را در سایت زنده آن مشاهده کنید .
رابط خط فرمان Firebase CLI) استفاده از getStaticProps و getStaticPaths را تشخیص میدهد.
هنگام گنجاندن متدهای Firebase JS SDK در بستههای سرور و کلاینت، قبل از استفاده از محصول، با بررسی isSupported() از خطاهای زمان اجرا جلوگیری کنید. همه محصولات در همه محیطها پشتیبانی نمیشوند.
بستههای SDK مدیریت در صورت قرار گرفتن در ساختار مرورگر شما با شکست مواجه میشوند؛ فقط درون getStaticProps و getStaticPaths به آنها ارجاع دهید.
رابط خط فرمان Firebase CLI) استفاده از getServerSideProps را تشخیص میدهد. در چنین مواردی، رابط خط فرمان توابع را در Cloud Functions for Firebase مستقر میکند تا کد سرور پویا را اجرا کند. میتوانید اطلاعات مربوط به این توابع، مانند پیکربندی دامنه و زمان اجرا، را در کنسول فایربیس مشاهده کنید.
next.config.jsاستفاده از Next.js Image Optimization پشتیبانی میشود، اما باعث ایجاد یک تابع (در Cloud Functions for Firebase ) میشود، حتی اگر از SSR استفاده نکنید.
رابط خط فرمان Firebase CLI) به ریدایرکتها ، بازنویسیها و هدرهای موجود در next.config.js احترام میگذارد و آنها را در زمان استقرار به پیکربندی معادل Firebase Hosting مربوطه تبدیل میکند. اگر یک ریدایرکت، بازنویسی یا هدر Next.js نتواند به یک هدر معادل Firebase Hosting تبدیل شود، به عقب برمیگردد و یک تابع میسازد - حتی اگر از بهینهسازی تصویر یا SSR استفاده نمیکنید.
ابزار استقرار Firebase که از چارچوب وب آگاه است، به طور خودکار وضعیت کلاینت و سرور را با استفاده از کوکیها همگام نگه میدارد. روشهایی برای دسترسی به زمینه احراز هویت در SSR ارائه شده است:
- شیء Express
res.localsبه صورت اختیاری شامل یک نمونه احراز هویت شده از برنامه Firebase (firebaseApp) و کاربر فعلی وارد شده (currentUser) خواهد بود. این مورد را میتوان درgetServerSidePropsمشاهده کرد. - نام احراز هویت شدهی برنامهی Firebase در کوئری مسیر (
__firebaseAppName) ارائه شده است. این امر امکان ادغام دستی را در حین انجام موارد زیر فراهم میکند:
// get the authenticated Firebase App
const firebaseApp = getApp(useRouter().query.__firebaseAppName);