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 से मॉड्यूलर वेब एसडीके में अपग्रेड करें

वर्तमान में Firebase वेब SDK संस्करण 8 या इससे पहले के संस्करण का उपयोग करने वाले ऐप्स को इस मार्गदर्शिका में दिए गए निर्देशों का उपयोग करके संस्करण 9 में माइग्रेट करने पर विचार करना चाहिए।

इस गाइड मानता है कि आप संस्करण 8 से परिचित हैं और है कि आप के रूप में ऐसी बंडलर एक मॉड्यूल का लाभ प्राप्त करेंगे webpack या रोलअप उन्नयन और चल रहे संस्करण 9 विकास के लिए।

अपने विकास परिवेश में मॉड्यूल बंडलर का उपयोग करने की दृढ़ता से अनुशंसा की जाती है। यदि आप एक का उपयोग नहीं करते हैं, तो आप कम ऐप आकार में संस्करण 9 के मुख्य लाभों का लाभ नहीं उठा पाएंगे। आप की आवश्यकता होगी NPM या सूत एसडीके स्थापित करने के लिए।

इस गाइड में अपग्रेड चरण एक काल्पनिक वेब ऐप पर आधारित होंगे जो प्रमाणीकरण और क्लाउड फायरस्टोर एसडीके का उपयोग करता है। उदाहरणों के माध्यम से काम करके, आप सभी समर्थित फायरबेस वेब एसडीके को अपग्रेड करने के लिए आवश्यक अवधारणाओं और व्यावहारिक चरणों में महारत हासिल कर सकते हैं।

संगत पुस्तकालयों के बारे में

फायरबेस वेब एसडीके संस्करण 9 के लिए दो प्रकार के पुस्तकालय उपलब्ध हैं:

  • मॉड्यूलर - एक नए API पेड़ को हिला (अप्रयुक्त कोड को हटाना) सुविधा के लिए बनाया सतह छोटे और तेजी से संभव के रूप में अपने वेब ऐप्लिकेशन बनाने के लिए।
  • Compat - एक परिचित एपीआई सतह है जो संस्करण 8 SDK के साथ पूरी तरह से संगत है, तो आप एक बार में अपने Firebase कोड के सभी बदले बिना संस्करण 9 में नवीनीकृत करने की इजाजत दी। संगत पुस्तकालयों का उनके संस्करण 8 समकक्षों की तुलना में बहुत कम या कोई आकार या प्रदर्शन लाभ नहीं है।

यह मार्गदर्शिका मानती है कि आप अपने उन्नयन को सुविधाजनक बनाने के लिए संस्करण 9 के अनुकूल पुस्तकालयों का लाभ उठाएंगे। ये पुस्तकालय आपको संस्करण 9 के लिए रिफैक्टर किए गए कोड के साथ संस्करण 8 कोड का उपयोग जारी रखने की अनुमति देते हैं। इसका मतलब है कि आप अपने ऐप को और अधिक आसानी से संकलित और डीबग कर सकते हैं क्योंकि आप अपग्रेड प्रक्रिया के माध्यम से काम करते हैं।

उन ऐप्स के लिए जिनका फायरबेस वेब एसडीके के लिए बहुत कम एक्सपोजर है - उदाहरण के लिए, एक ऐप जो प्रमाणीकरण एपीआई के लिए केवल एक साधारण कॉल करता है - यह संस्करण 9 कॉम्पेट लाइब्रेरी का उपयोग किए बिना संस्करण 8 कोड को दोबारा करने के लिए व्यावहारिक हो सकता है। यदि आप इस तरह के ऐप को अपग्रेड कर रहे हैं, तो आप कॉम्पिटिशन लाइब्रेरी का उपयोग किए बिना "संस्करण 9 मॉड्यूलर" के लिए इस गाइड में दिए गए निर्देशों का पालन कर सकते हैं।

अपग्रेड प्रक्रिया के बारे में

अपग्रेड प्रक्रिया के प्रत्येक चरण का दायरा बढ़ाया जाता है ताकि आप अपने ऐप के लिए स्रोत का संपादन समाप्त कर सकें और फिर इसे बिना किसी तोड़-फोड़ के संकलित और चला सकें। संक्षेप में, यहां बताया गया है कि आप किसी ऐप को अपग्रेड करने के लिए क्या करेंगे:

  1. अपने ऐप में संस्करण 9 लाइब्रेरी और कॉम्पेट लाइब्रेरी जोड़ें।
  2. अपने कोड में आयात विवरण को v9 संगत में अपडेट करें।
  3. मॉड्यूलर शैली के लिए एकल उत्पाद (उदाहरण के लिए, प्रमाणीकरण) के लिए रिफैक्टर कोड।
  4. वैकल्पिक: इस बिंदु पर, जारी रखने से पहले प्रमाणीकरण के लिए ऐप आकार के लाभ का एहसास करने के लिए प्रमाणीकरण के लिए प्रमाणीकरण कॉम्पैट लाइब्रेरी और कॉम्पेट कोड को हटा दें।
  5. मॉड्यूलर शैली के लिए प्रत्येक उत्पाद (उदाहरण के लिए, क्लाउड फायरस्टोर, एफसीएम, आदि) के लिए रिफैक्टर कार्य करता है, सभी क्षेत्रों के पूर्ण होने तक संकलन और परीक्षण करता है।
  6. इनिशियलाइज़ेशन कोड को मॉड्यूलर स्टाइल में अपडेट करें।
  7. अपने ऐप से सभी शेष संस्करण 9 कॉम्पेट स्टेटमेंट और कॉम्पेट कोड को हटा दें।

संस्करण 9 एसडीके प्राप्त करें

आरंभ करने के लिए, npm का उपयोग करके संस्करण 9 लाइब्रेरी और कॉम्पेट लाइब्रेरी प्राप्त करें:

npm i firebase@9.1.3

# OR

yarn add firebase@9.1.3

आयात को v9 कॉम्पैट में अपडेट करें

अपनी निर्भरता को v8 से v9 बीटा में अपडेट करने के बाद अपने कोड को कार्यशील रखने के लिए, प्रत्येक आयात के "compat" संस्करण का उपयोग करने के लिए अपने आयात विवरण बदलें। उदाहरण के लिए:

इससे पहले: संस्करण 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: क्लाउड फायरस्टोर फ़ंक्शन को फिर से सक्रिय करना

इससे पहले: संस्करण 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 कोड शैलियों का संयोजन

अपग्रेड के दौरान कॉम्पेट पुस्तकालयों का उपयोग करने से आप संस्करण 9 के लिए रिफैक्टर किए गए कोड के साथ संस्करण 8 कोड का उपयोग जारी रख सकते हैं। इसका मतलब है कि आप क्लाउड फायरस्टोर के लिए मौजूदा संस्करण 8 कोड रख सकते हैं, जबकि आप प्रमाणीकरण या अन्य फायरबेस एसडीके कोड को संस्करण 9 शैली में पुन: सक्रिय करते हैं, और अभी भी दोनों कोड शैलियों के साथ अपने ऐप को सफलतापूर्वक संकलित करें। उसी के लिए इस तरह के बादल इस firestore के रूप में एक उत्पाद के भीतर संस्करण 8 और संस्करण 9 कोड सही है; जब तक आप कॉम्पिटिशन पैकेज आयात कर रहे हैं, तब तक नई और पुरानी कोड शैलियाँ सह-अस्तित्व में रह सकती हैं:

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 और मॉड्यूलर एपीआई के लिए वैश्विक राज्य initializes जबकि मॉड्यूलर, initializeApp() समारोह मॉड्यूलर के लिए केवल राज्य initializes।

इससे पहले: संस्करण 9 संगत

import firebase from "firebase/compat/app"

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

के बाद: संस्करण 9 मॉड्यूलर

import { initializeApp } from "firebase/app"

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

संगत कोड निकालें

संस्करण 9 मॉड्यूलर एसडीके के आकार लाभ का एहसास करने के लिए, आपको धीरे-धीरे ऊपर दिखाए गए मॉड्यूलर शैली के लिए सभी आमंत्रण बदलने और के सभी निकाल देना चाहिए import "firebase/compat/* अपने कोड से बयान। जब आप कर रहे हैं, वहाँ कोई होना चाहिए करने के लिए अधिक संदर्भ firebase.* ग्लोबल नेम स्पेस या संस्करण 8 एसडीके शैली में किसी अन्य कोड।

विंडो से कॉम्पिटिशन लाइब्रेरी का उपयोग करना

संस्करण 9 एसडीके बल्कि ब्राउज़र की तुलना में मॉड्यूल के साथ काम करने के लिए अनुकूलित है window वस्तु। पुस्तकालय के पिछले संस्करण का उपयोग करके लोड हो रहा है और Firebase के प्रबंधन की अनुमति दी window.firebase नाम स्थान। आगे बढ़ने की अनुशंसा नहीं की जाती है क्योंकि यह अप्रयुक्त कोड उन्मूलन की अनुमति नहीं देता है। हालांकि, जावास्क्रिप्ट SDK के compat संस्करण के साथ काम करता है 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 कोड का उपयोग करता है और इसे संस्करण 8 एसडीके के समान एपीआई प्रदान करता है; इसका मतलब यह है कि आप का उल्लेख कर सकते संस्करण 8 API संदर्भ और जानकारी के लिए संस्करण 8 कोड के टुकड़े। लंबी अवधि के उपयोग के लिए इस पद्धति की अनुशंसा नहीं की जाती है, लेकिन पूरी तरह से मॉड्यूलर संस्करण 9 पुस्तकालय में अपग्रेड करने की शुरुआत के रूप में।

संस्करण 9 के लाभ और सीमाएं

पूरी तरह से संशोधित संस्करण 9 में पिछले संस्करणों की तुलना में ये फायदे हैं:

  • संस्करण 9 नाटकीय रूप से कम किए गए ऐप आकार को सक्षम करता है। यह आधुनिक जावास्क्रिप्ट मॉड्यूल प्रारूप को अपनाता है, जिससे "ट्री शेकिंग" प्रथाओं की अनुमति मिलती है जिसमें आप केवल अपने ऐप की जरूरत की कलाकृतियों को आयात करते हैं। आपके ऐप के आधार पर, संस्करण 9 के साथ ट्री-शेकिंग का परिणाम संस्करण 8 का उपयोग करके बनाए गए तुलनीय ऐप की तुलना में 80% कम किलोबाइट हो सकता है।
  • संस्करण 9 को चल रहे फीचर विकास से लाभ मिलता रहेगा, जबकि संस्करण 8 को भविष्य में एक बिंदु पर फ्रीज कर दिया जाएगा।