Check out what’s new from Firebase at Google I/O 2022. Learn more

সংস্করণ 8 থেকে মডুলার ওয়েব SDK-এ আপগ্রেড করুন

বর্তমানে যে অ্যাপগুলি Firebase ওয়েব SDK সংস্করণ 8 বা তার আগের ব্যবহার করছে তাদের এই গাইডের নির্দেশাবলী ব্যবহার করে সংস্করণ 9-এ স্থানান্তরিত করার কথা বিবেচনা করা উচিত।

এই নির্দেশিকাটি অনুমান করে যে আপনি সংস্করণ 8 এর সাথে পরিচিত এবং আপনি একটি মডিউল বান্ডলার যেমন ওয়েবপ্যাক বা রোলআপ আপগ্রেড এবং চলমান সংস্করণ 9 বিকাশের সুবিধা গ্রহণ করবেন।

আপনার উন্নয়ন পরিবেশে একটি মডিউল বান্ডলার ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করা হয়। আপনি যদি একটি ব্যবহার না করেন, আপনি হ্রাসকৃত অ্যাপের আকারে সংস্করণ 9-এর প্রধান সুবিধাগুলির সুবিধা নিতে পারবেন না। SDK ইনস্টল করার জন্য আপনার npm বা সুতার প্রয়োজন হবে।

এই নির্দেশিকায় আপগ্রেডের ধাপগুলি একটি কাল্পনিক ওয়েব অ্যাপের উপর ভিত্তি করে হবে যা প্রমাণীকরণ এবং ক্লাউড ফায়ারস্টোর SDK ব্যবহার করে। উদাহরণগুলির মাধ্যমে কাজ করে, আপনি সমস্ত সমর্থিত Firebase ওয়েব SDK আপগ্রেড করার জন্য প্রয়োজনীয় ধারণা এবং বাস্তব পদক্ষেপগুলি আয়ত্ত করতে পারেন৷

কমপ্যাট লাইব্রেরি সম্পর্কে

Firebase ওয়েব SDK সংস্করণ 9 এর জন্য দুটি ধরণের লাইব্রেরি উপলব্ধ রয়েছে:

  • মডুলার - আপনার ওয়েব অ্যাপকে যতটা সম্ভব ছোট এবং দ্রুত করতে ট্রি-কাঁপানো (অব্যবহৃত কোড অপসারণ) সহজতর করার জন্য ডিজাইন করা একটি নতুন API পৃষ্ঠ।
  • কম্প্যাট - একটি পরিচিত API পৃষ্ঠ যা সংস্করণ 8 SDK-এর সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ, যা আপনাকে একবারে আপনার সমস্ত Firebase কোড পরিবর্তন না করে সংস্করণ 9-এ আপগ্রেড করার অনুমতি দেয়৷ কমপ্যাট লাইব্রেরিগুলির 8 সংস্করণের তুলনায় কোন আকার বা কর্মক্ষমতা সুবিধা নেই।

এই নির্দেশিকাটি অনুমান করে যে আপনি আপনার আপগ্রেডের সুবিধার্থে সংস্করণ 9 কম্প্যাট লাইব্রেরির সুবিধা নেবেন। এই লাইব্রেরিগুলি আপনাকে 9 সংস্করণের জন্য রিফ্যাক্টর কোডের পাশাপাশি সংস্করণ 8 কোড ব্যবহার চালিয়ে যেতে দেয়। এর মানে আপনি আপগ্রেড প্রক্রিয়ার মাধ্যমে কাজ করার সাথে সাথে আপনার অ্যাপকে আরও সহজে কম্পাইল এবং ডিবাগ করতে পারবেন।

ফায়ারবেস ওয়েব SDK-তে খুব ছোট এক্সপোজার সহ অ্যাপগুলির জন্য - উদাহরণস্বরূপ, একটি অ্যাপ যা প্রমাণীকরণ API-কে শুধুমাত্র একটি সাধারণ কল করে - এটি সংস্করণ 9 কমপ্যাট লাইব্রেরি ব্যবহার না করে রিফ্যাক্টর সংস্করণ 8 কোড ব্যবহার করা হতে পারে। আপনি যদি এই ধরনের একটি অ্যাপ আপগ্রেড করেন, তাহলে আপনি কম্প্যাট লাইব্রেরি ব্যবহার না করেই "সংস্করণ 9 মডুলার"-এর জন্য এই নির্দেশিকায় দেওয়া নির্দেশাবলী অনুসরণ করতে পারেন।

আপগ্রেড প্রক্রিয়া সম্পর্কে

আপগ্রেড প্রক্রিয়ার প্রতিটি ধাপে স্কোপ করা হয়েছে যাতে আপনি আপনার অ্যাপের জন্য উৎস সম্পাদনা শেষ করতে পারেন এবং তারপর কম্পাইল করতে পারেন এবং ভাঙা ছাড়াই চালাতে পারেন। সংক্ষেপে, একটি অ্যাপ আপগ্রেড করতে আপনি যা করবেন তা এখানে:

  1. আপনার অ্যাপে সংস্করণ 9 লাইব্রেরি এবং কম্প্যাট লাইব্রেরি যোগ করুন।
  2. v9 কম্প্যাটে আপনার কোডে আমদানি বিবৃতি আপডেট করুন।
  3. একটি একক পণ্যের জন্য রিফ্যাক্টর কোড (উদাহরণস্বরূপ, প্রমাণীকরণ) মডুলার শৈলীতে।
  4. ঐচ্ছিক: এই মুহুর্তে, চালিয়ে যাওয়ার আগে প্রমাণীকরণের জন্য অ্যাপের আকারের সুবিধা উপলব্ধি করার জন্য প্রমাণীকরণের জন্য প্রমাণীকরণ কম্প্যাট লাইব্রেরি এবং কম্প্যাট কোড সরিয়ে দিন।
  5. প্রতিটি পণ্যের জন্য রিফ্যাক্টর ফাংশন (উদাহরণস্বরূপ, ক্লাউড ফায়ারস্টোর, এফসিএম, ইত্যাদি) মডুলার শৈলীতে, সমস্ত এলাকা সম্পূর্ণ না হওয়া পর্যন্ত কম্পাইল করা এবং পরীক্ষা করা।
  6. মডুলার শৈলীতে আরম্ভ করার কোড আপডেট করুন।
  7. আপনার অ্যাপ থেকে সমস্ত অবশিষ্ট সংস্করণ 9 কম্প্যাট বিবৃতি এবং কম্প্যাট কোড সরান।

সংস্করণ 9 SDK পান

শুরু করতে, npm ব্যবহার করে সংস্করণ 9 লাইব্রেরি এবং কম্প্যাট লাইব্রেরি পান:

npm i firebase@9.8.1

# OR

yarn add firebase@9.8.1

v9 কম্প্যাটে আমদানি আপডেট করুন

v8 থেকে v9 বিটাতে আপনার নির্ভরতা আপডেট করার পরে আপনার কোড কার্যকরী রাখার জন্য, প্রতিটি আমদানির "কম্প্যাট" সংস্করণ ব্যবহার করতে আপনার আমদানি বিবৃতি পরিবর্তন করুন৷ উদাহরণ স্বরূপ:

আগে: সংস্করণ 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-এ, পরিষেবাগুলিকে প্রথম আর্গুমেন্ট হিসাবে পাস করা হয়, এবং ফাংশনটি তারপর পরিষেবার বিশদ বিবরণ ব্যবহার করে বাকিগুলি করতে। প্রমাণীকরণ এবং ক্লাউড ফায়ারস্টোর API-কে রিফ্যাক্টর কল করে এমন দুটি উদাহরণে এটি কীভাবে কাজ করে তা পরীক্ষা করা যাক।

উদাহরণ 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());
});

Firestore DocumentSnapshot.exists এর রেফারেন্স আপডেট করুন

সংস্করণ 9 একটি ব্রেকিং পরিবর্তন প্রবর্তন করে যেখানে সম্পত্তি firestore.DocumentSnapshot.exists একটি পদ্ধতিতে পরিবর্তন করা হয়েছে। কার্যকারিতাটি মূলত একই (কোন নথি বিদ্যমান কিনা তা পরীক্ষা করা) তবে দেখানো হিসাবে v9 পদ্ধতি ব্যবহার করার জন্য আপনাকে অবশ্যই আপনার কোড রিফ্যাক্টর করতে হবে:

আগে: সংস্করণ 9 কম্প্যাট

if (snapshot.exists) {
  console.log("the document exists");
}

পরে: সংস্করণ 9 মডুলার

if (snapshot.exists()) {
  console.log("the document exists");
}

উদাহরণ 3: সংস্করণ 8 এবং সংস্করণ 9 কোড শৈলী একত্রিত করা

আপগ্রেডের সময় কম্প্যাট লাইব্রেরি ব্যবহার করলে আপনি সংস্করণ 9-এর জন্য রিফ্যাক্টর করা কোডের পাশাপাশি সংস্করণ 8 কোড ব্যবহার চালিয়ে যেতে পারবেন। এর মানে হল আপনি ক্লাউড ফায়ারস্টোরের জন্য বিদ্যমান সংস্করণ 8 কোড রাখতে পারবেন যখন আপনি প্রমাণীকরণ বা অন্যান্য ফায়ারবেস SDK কোড সংস্করণ 9 স্টাইলে রিফ্যাক্টর করবেন, এবং এখনও উভয় কোড শৈলীর সাথে আপনার অ্যাপটি সফলভাবে কম্পাইল করুন। ক্লাউড ফায়ারস্টোরের মতো একটি পণ্যের মধ্যে সংস্করণ 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() এবং মডুলার এপিআই উভয়ের জন্য গ্লোবাল স্টেট আরম্ভ করে, যেখানে মডুলার 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.* গ্লোবাল নেমস্পেস বা সংস্করণ 8 SDK স্টাইলে অন্য কোনো কোড।

উইন্ডো থেকে কম্প্যাট লাইব্রেরি ব্যবহার করে

সংস্করণ 9 SDK ব্রাউজারের window অবজেক্টের পরিবর্তে মডিউলগুলির সাথে কাজ করার জন্য অপ্টিমাইজ করা হয়েছে৷ লাইব্রেরির পূর্ববর্তী সংস্করণ window.firebase নামস্থান ব্যবহার করে Firebase-এর লোডিং এবং পরিচালনার অনুমতি দেয়। এটি অব্যবহৃত কোড নির্মূল করার অনুমতি দেয় না বলে এটি এগিয়ে যাওয়ার সুপারিশ করা হয় না। যাইহোক, জাভাস্ক্রিপ্ট SDK-এর কম্প্যাট সংস্করণটি এমন ডেভেলপারদের জন্য window সাথে কাজ করে যারা মডুলার আপগ্রেড পাথ অবিলম্বে শুরু করতে পছন্দ করে না।

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

সামঞ্জস্যপূর্ণ লাইব্রেরি হুডের নিচে মডুলার সংস্করণ 9 কোড ব্যবহার করে এবং এটিকে সংস্করণ 8 SDK-এর মতো একই API প্রদান করে; এর মানে আপনি বিবরণের জন্য সংস্করণ 8 API রেফারেন্স এবং সংস্করণ 8 কোড স্নিপেটগুলি উল্লেখ করতে পারেন। এই পদ্ধতিটি দীর্ঘমেয়াদী ব্যবহারের জন্য সুপারিশ করা হয় না, তবে সম্পূর্ণ মডুলার সংস্করণ 9 লাইব্রেরিতে আপগ্রেড করার শুরু হিসাবে।

সংস্করণ 9 এর সুবিধা এবং সীমাবদ্ধতা

সম্পূর্ণরূপে মডুলারাইজড সংস্করণ 9 এর আগের সংস্করণগুলির তুলনায় এই সুবিধাগুলি রয়েছে:

  • সংস্করণ 9 একটি নাটকীয়ভাবে হ্রাস করা অ্যাপের আকার সক্ষম করে৷ এটি আধুনিক জাভাস্ক্রিপ্ট মডিউল ফর্ম্যাট গ্রহণ করে, "গাছ কাঁপানো" অনুশীলনের অনুমতি দেয় যেখানে আপনি শুধুমাত্র আপনার অ্যাপের প্রয়োজনীয় শিল্পকর্ম আমদানি করেন। আপনার অ্যাপ্লিকেশানের উপর নির্ভর করে, সংস্করণ 9 এর সাথে গাছ-কাঁপানোর ফলে সংস্করণ 8 ব্যবহার করে নির্মিত তুলনামূলক অ্যাপের তুলনায় 80% কম কিলোবাইট হতে পারে।
  • সংস্করণ 9 চলমান বৈশিষ্ট্য বিকাশ থেকে উপকৃত হতে থাকবে, যখন সংস্করণ 8 ভবিষ্যতে একটি বিন্দুতে হিমায়িত হবে।