Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

npm i firebase@9.6.0

# OR

yarn add firebase@9.6.0

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 API গুলি একটি ডট শৃঙ্খলিত নামস্থান ও সেবা প্যাটার্ন এর উপর ভিত্তি করে যখন, সংস্করণ 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 এ খুব ভিন্ন; কোন chaining, এবং যেমন পদ্ধতি 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 কোড শৈলীর সমন্বয়

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

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

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

<script src="https://www.gstatic.com/firebasejs/9.6.0/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.6.0/firebase-firestore-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.6.0/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 এপিআই রেফারেন্স এবং বিস্তারিত জানার জন্য সংস্করণ 8 কোড স্নিপেট। এই পদ্ধতিটি দীর্ঘমেয়াদী ব্যবহারের জন্য সুপারিশ করা হয় না, তবে সম্পূর্ণ মডুলার সংস্করণ 9 লাইব্রেরিতে আপগ্রেড করার সূচনা হিসাবে।

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

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

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