Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

از نسخه 8 به SDK وب مدولار ارتقا دهید

برنامه هایی که در حال حاضر از Firebase Web SDK نسخه 8 یا قبل استفاده می کنند باید با استفاده از دستورالعمل های این راهنما به نسخه 9 مهاجرت کنند.

این راهنما فرض که شما با نسخه 8 آشنا هستند و که شما خواهد شد استفاده از یک ماژول bundler مانند را webpack یا عرضه به برای به روز رسانی و نسخه جاری 9 توسعه است.

استفاده از بسته بندی ماژول در محیط توسعه به شدت توصیه می شود. اگر از یکی استفاده نمی کنید ، نمی توانید از مزایای اصلی نسخه 9 در کاهش حجم برنامه استفاده کنید. شما نیاز NPM یا نخ برای نصب SDK.

مراحل ارتقا در این راهنما بر اساس یک برنامه وب خیالی است که از SDK های احراز هویت و Cloud Firestore استفاده می کند. با کار با مثال ها ، می توانید مفاهیم و مراحل عملی مورد نیاز برای ارتقاء همه SDK های پشتیبانی شده Firebase Web را فرا بگیرید.

درباره کتابخانه های همکار

دو نوع کتابخانه برای Firebase Web SDK نسخه 9 موجود است:

  • مدولار - سطح API جدید طراحی شده برای تسهیل درخت تکان دادن (حذف کد استفاده نشده) به برنامه وب خود را به عنوان کوچک و سریع که ممکن است.
  • Compat - یک سطح API آشنا است که به طور کامل با نسخه 8 SDK سازگار، به شما این امکان ارتقاء به نسخه 9 بدون تغییر تمام کد Firebase خود در یک بار. کتابخانه های متقابل از نظر اندازه یا عملکرد نسبت به نسخه های 8 خود دارای مزایای کمی هستند.

این راهنما فرض می کند که شما برای سهولت ارتقاء خود از کتابخانه های سازگار نسخه 9 استفاده خواهید کرد. این کتابخانه ها به شما این امکان را می دهند تا از کد نسخه 8 در کنار کدی که برای نسخه 9 تغییر شکل داده است استفاده کنید. این بدان معناست که هنگام کار در مرحله ارتقاء می توانید برنامه خود را راحت تر کامپایل و اشکال زدایی کنید.

برای برنامه هایی که در معرض بسیار کمی از Firebase Web SDK هستند - به عنوان مثال ، برنامه ای که فقط با API های احراز هویت تماس ساده ای برقرار می کند - ممکن است بدون استفاده از کتابخانه های سازگار نسخه 9 ، تغییر شکل کد 8 عملی باشد. اگر چنین برنامه ای را ارتقا می دهید ، می توانید دستورالعمل های این راهنمای "نسخه 9 ماژولار" را بدون استفاده از کتابخانه های همگام دنبال کنید.

در مورد روند ارتقاء

هر مرحله از فرآیند ارتقاء به گونه ای تنظیم شده است که می توانید ویرایش منبع برنامه خود را به پایان برسانید و سپس آن را کاملاً کامپایل و اجرا کنید. به طور خلاصه ، موارد زیر را برای ارتقاء برنامه انجام دهید:

  1. کتابخانه های نسخه 9 و کتابخانه های سازگار را به برنامه خود اضافه کنید.
  2. دستورات واردات در کد خود را به v9 compat به روز کنید.
  3. کد Refactor برای یک محصول واحد (به عنوان مثال ، احراز هویت) به سبک مدولار.
  4. اختیاری: در این مرحله ، کتابخانه سازگار با احراز هویت و کد سازگار برای احراز هویت را حذف کنید تا قبل از ادامه به مزیت اندازه برنامه برای احراز هویت پی ببرید.
  5. عملکردهای Refactor برای هر محصول (به عنوان مثال ، Cloud Firestore ، FCM ، و غیره) به سبک ماژولار ، کامپایل و آزمایش می شود تا تمام مناطق کامل شوند.
  6. کد اولیه را به سبک ماژولار به روز کنید.
  7. تمام نسخه های باقی مانده نسخه 9 و کد سازگار را از برنامه خود حذف کنید.

SDK نسخه 9 را دریافت کنید

برای شروع ، کتابخانه های نسخه 9 و کتابخانه های سازگار را با استفاده از npm دریافت کنید:

npm i firebase@9.1.3

# OR

yarn add firebase@9.1.3

واردات را به سازگار v9 به روز کنید

به منظور حفظ عملکرد کد پس از به روزرسانی وابستگی خود از v8 به نسخه 9 بتا ، دستورات واردات خود را تغییر دهید تا از نسخه "سازگار" هر واردات استفاده کنید. مثلا:

قبل: نسخه 8

import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';

بعد: نسخه 9 سازگار

// v9 compat packages are API compatible with v8 code
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth';
import 'firebase/compat/firestore';

بازتاب دهنده به سبک مدولار

در حالی که نسخه 8 رابط های برنامه کاربردی بر روی یک فضای نامی و خدمات الگوی نقطه زنجیر است، نسخه 9 به این معنی است که روش مدولار کد خود را خواهد شد اساسا حول توابع سازمان یافته است. در نسخه 9، firebase/app بسته و بسته های دیگر انجام صادرات جامع که شامل تمام روش های از بسته نمی گرداند. در عوض ، بسته ها توابع فردی را صادر می کنند.

در نسخه 9 ، سرویسها به عنوان اولین آرگومان منتقل می شوند و سپس تابع از جزئیات سرویس برای انجام بقیه استفاده می کند. بیایید نحوه عملکرد این دستگاه را در دو مثال بررسی کنیم.

مثال 1: تغییر شکل مجدد یک تابع احراز هویت

قبل: نسخه 9 سازگار است

کد سازگار نسخه 9 مشابه کد نسخه 8 است ، اما واردات تغییر کرده است.

import firebase from "firebase/compat/app";
import "firebase/compat/auth";

const auth = firebase.auth();
auth.onAuthStateChanged(user => { 
  // Check for user status
});

بعد: نسخه 9 ماژولار

getAuth تابع firebaseApp به عنوان اولین پارامتر آن است. onAuthStateChanged تابع از زنجیر نمی auth نمونه به عنوان آن را در نسخه 8 می باشد. در عوض، آن یک تابع آزاد است که طول می کشد auth به عنوان اولین پارامتر آن است.

import { getAuth, onAuthStateChanged } from "firebase/auth";

const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
  // Check for user status
});

مثال 2: تغییر شکل یک عملکرد Cloud Firestore

قبل: نسخه 9 سازگار است

import "firebase/compat/firestore"

const db = firebase.firestore();
db.collection("cities").where("capital", "==", true)
    .get()
    .then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            // doc.data() is never undefined for query doc snapshots
            console.log(doc.id, " => ", doc.data());
        });
    })
    .catch((error) => {
        console.log("Error getting documents: ", error);
    });

بعد: نسخه 9 ماژولار

getFirestore تابع firebaseApp به عنوان اولین پارامتر آن است، که از بازگردانده شد initializeApp در مثال قبل. توجه داشته باشید که چگونه کد تشکیل یک پرس و جو در نسخه 9 بسیار متفاوت است. هیچ زنجیری وجود دارد، و روش هایی از قبیل query یا where در حال حاضر به عنوان توابع رایگان قرار گرفته است.

import { getFirestore, collection, query, where, getDocs } from "firebase/firestore";

const db = getFirestore(firebaseApp);

const q = query(collection(db, "cities"), where("capital", "==", true));

const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
  // doc.data() is never undefined for query doc snapshots
  console.log(doc.id, " => ", doc.data());
});

مثال 3: ترکیب سبک های کد نسخه 8 و نسخه 9

استفاده از کتابخانه های سازگار در هنگام ارتقا به شما امکان می دهد از کد نسخه 8 در کنار کدی که برای نسخه 9 بازسازی شده است استفاده کنید. این بدان معناست که می توانید کد موجود نسخه 8 را برای Cloud Firestore در حالی که احراز هویت یا سایر کدهای SDK Firebase را به سبک نسخه 9 بازسازی می کنید ، حفظ کنید. برنامه خود را با هر دو سبک کد کامپایل کنید. همان درست است برای کد نسخه 8 و نسخه 9 در یک محصول مانند ابر Firestore است. تا زمانی که بسته های سازگار را وارد می کنید ، سبک های جدید و قدیمی کد می توانند وجود داشته باشند:

import firebase from 'firebase/compat/app';
import 'firebase/compat/firestore';
import { getDoc } from 'firebase/firestore'

const docRef = firebase.firestore().doc();
getDoc(docRef);

به خاطر داشته باشید که اگرچه برنامه شما کامپایل می شود ، اما تا زمانی که کاملاً عبارات و کد سازگار را از برنامه خود حذف نکنید ، مزایای اندازه برنامه را دریافت نخواهید کرد.

کد اولیه را به روز کنید

کد اولیه برنامه خود را برای استفاده از نحو جدید ماژولار نسخه 9 به روز کنید. این مهم است که برای به روز رسانی این کد پس از شما را به اتمام فاکتورگیری مجدد تمام کد در برنامه شما. دلیل این است که firebase.initializeApp() مقدار دهی اولیه دولت جهانی را برای هر دو compat و API های مدولار، در حالی که مدولار initializeApp() تابع مقدار دهی اولیه تنها دولت برای مدولار.

قبل: نسخه 9 سازگار است

import firebase from "firebase/compat/app"

firebase.initializeApp({ /* config */ });

بعد: نسخه 9 ماژولار

import { initializeApp } from "firebase/app"

const firebaseApp = initializeApp({ /* config */ });

حذف کد سازگار

برای تحقق بخشیدن به منافع اندازه نسخه 9 SDK مدولار، در نهایت شما باید تبدیل تمام فراخوانی به سبک های مدولار بالا نشان داده شده و حذف همه از import "firebase/compat/* اظهارات از کد خود را. هنگامی که شما انجام می شود، وجود ندارد باید مراجع بیشتر به firebase.* فضای نامی جهانی و یا هر کد دیگر در سبک SDK نسخه 8.

با استفاده از کتابخانه سازگار از پنجره

نسخه 9 SDK است برای کار با ماژول به جای مرورگر بهینه سازی window شی. نسخه های قبلی این کتابخانه در حال بارگذاری و مدیریت فایربیس با استفاده از اجازه window.firebase فضای نام. این کار در آینده توصیه نمی شود زیرا اجازه حذف کد بلااستفاده را نمی دهد. با این حال، نسخه compat از جاوا اسکریپت SDK کار با window برای توسعه دهندگان که ترجیح می دهند را فورا مسیر ارتقاء مدولار آغاز خواهد شد.

<script src="https://www.gstatic.com/firebasejs/9.1.3/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.1.3/firebase-firestore-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.1.3/firebase-auth-compat.js"></script>
<script>
   const firebaseApp = firebase.initializeApp({ /* Firebase config */ });
   const db = firebaseApp.firestore();
   const auth = firebaseApp.auth();
</script>

کتابخانه سازگاری از کد نسخه 9 ماژولار در زیر پوشش استفاده می کند و همان API نسخه 8 SDK را برای آن فراهم می کند. این بدان معنی است شما می توانید به مراجعه نسخه 8 API مرجع و نسخه 8 قطعه کد برای جزئیات بیشتر. این روش برای استفاده طولانی مدت توصیه نمی شود ، اما به عنوان یک شروع برای ارتقاء به کتابخانه نسخه کامل ماژولار 9 است.

مزایا و محدودیت های نسخه 9

نسخه 9 به طور کامل مدولاریزه دارای مزایایی نسبت به نسخه های قبلی است:

  • نسخه 9 اندازه برنامه را به طرز چشمگیری کاهش می دهد. این قالب مدرن ماژول جاوا اسکریپت را تصویب می کند و امکان "تکان دادن درخت" را فراهم می کند که در آن فقط مصنوعات مورد نیاز برنامه خود را وارد می کنید. بسته به برنامه شما ، لرزش درخت با نسخه 9 می تواند 80٪ کیلوبایت کمتر از یک برنامه قابل مقایسه با نسخه 8 ایجاد کند.
  • نسخه 9 همچنان از توسعه ویژگی های مداوم بهره مند می شود ، در حالی که نسخه 8 در آینده در نقطه ای منجمد می شود.