Upgrade all'SDK web modulare (v9)

Le app che attualmente utilizzano l'SDK web 8 o versioni precedenti dovrebbero valutare la migrazione a versione 9 seguendo le istruzioni in questa guida.

Questa guida presuppone che tu abbia familiarità con la versione 8 e che dovrai di un bundler di moduli come webpack o Aggregazione per l'upgrade e lo sviluppo continuo della versione 9.

Ti consigliamo vivamente di utilizzare un bundler di moduli nel tuo ambiente di sviluppo. Se non ne utilizzi uno, non potrai sfruttare i vantaggi della versione 9 vantaggi in termini di dimensioni ridotte dell'app. È necessario npm o yarn per installare l'SDK.

Informazioni sulle librerie compatibili

Sono disponibili due tipi di librerie per la versione 9 dell'SDK web:

  • Modulare: una nuova piattaforma API progettata per facilitare l'eliminazione degli alberi. (rimozione del codice inutilizzato) per rendere la tua app web il più piccola e veloce possibile.
  • Compat: una piattaforma API familiare completamente compatibile con alla versione 8, che consente di eseguire l'upgrade alla versione 9 senza modificare tutte le il codice SDK contemporaneamente. Le librerie Compat hanno dimensioni minime o nulle in termini di prestazioni rispetto alle controparti della versione 8.

Questa guida presuppone che potrai sfruttare i vantaggi della versione 9 librerie per facilitare l'upgrade. Queste librerie ti consentono di continuare utilizzando il codice della versione 8 insieme al codice sottoposto a refactoring per la versione 9. Ciò significa che puoi puoi compilare ed eseguire il debug della tua app più facilmente man mano che esegui l'upgrade e il processo di sviluppo.

Per le app con un'esposizione molto ridotta all'SDK web, potrebbe essere pratico eseguire il refactoring del codice della versione 8 senza utilizzare le librerie compatibili della versione 9. Se eseguire l'upgrade di un'app di questo tipo, puoi seguire le istruzioni di questa guida per "versione modulare 9" senza utilizzare le librerie compatibili.

Informazioni sul processo di upgrade

Ogni passaggio del processo di upgrade è limitato affinché tu possa completare la modifica per la tua app, per poi compilarlo ed eseguirlo senza interruzioni. In sintesi, Per eseguire l'upgrade di un'app, procedi nel seguente modo:

  1. Aggiungi alla tua app le librerie della versione 9 e le librerie compatibili.
  2. Aggiorna le istruzioni di importazione nel codice alla versione v9.
  3. Esegui il refactoring del codice in stile modulare.
  4. Rimuovi la libreria di autenticazione e il codice compat per Autenticazione per sfruttare le dimensioni dell'app.
  5. Aggiorna il codice di inizializzazione allo stile modulare.
  6. Rimuovi tutte le restanti istruzioni compat della versione 9 e il codice compat da la tua app.

Scarica l'SDK versione 9

Per iniziare, scarica le librerie versione 9 e compatibili con le librerie tramite npm (versione più recente https://www.npmjs.com/package/firebase):

npm i [email protected]

# OR

yarn add [email protected]

Aggiorna importazioni a v9 compat

Per mantenere il codice funzionante dopo l'aggiornamento della dipendenza dalla versione 8 alla versione 8 Versione 9, modifica le istruzioni di importazione per utilizzare la versione "compat" di ogni importazione. Ad esempio:

Prima: versione 8

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

Dopo: versione 9 compatibile

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

Esegui il refactoring allo stile modulare

Mentre le API della versione 8 si basano su uno spazio dei nomi e un servizio con concatenamento di punti l'approccio modulare della versione 9 consente di organizzare il codice principalmente sulle funzioni. Nella versione 9, il pacchetto Firebase/app e altri pacchetti non restituiscono un'esportazione completa che contiene tutte le dal pacchetto. I pacchetti esportano invece singole funzioni.

Nella versione 9, i servizi vengono passati come primo argomento e la funzione quindi utilizza i dettagli del servizio per il resto.

Esempio: refactoring di una funzione di autenticazione semplice

Prima: versione 9 - compat

Il codice di compatibilità della versione 9 è identico al codice della versione 8, ma le importazioni sono cambiate. L'utilizzo delle librerie compatibili durante l'upgrade ti consente di continuare utilizzando il codice della versione 8 insieme al codice sottoposto a refactoring per la versione 9.

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

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

Dopo: versione 9 modulare

La funzione getAuth utilizza firebaseApp come primo parametro. La La funzione onAuthStateChanged non è concatenata dall'istanza di autenticazione come farebbe essere nella versione 8; invece è una funzione gratuita che prende auth come prima .

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

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

Aggiorna codice di inizializzazione

Aggiorna il codice di inizializzazione dell'app per usare la nuova sintassi modulare 9. È è importante aggiornare questo codice dopo aver completato il refactoring di tutte le il codice nella tua app; questo perché firebase.initializeApp() inizializza le impostazioni globali per le API compatibili e modulari, mentre La funzione initializeApp() inizializza solo lo stato per i moduli modulari.

Prima: versione 9 - compat

import firebase from "firebase/compat/app"

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

Dopo: versione 9 modulare

import { initializeApp } from "firebase/app"

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

Rimuovi codice di compatibilità

Per usufruire dei vantaggi in termini di dimensioni dell'SDK modulare versione 9, alla fine convertire tutte le chiamate nello stile modulare mostrato sopra e rimuovere tutte le chiamate import "firebase/compat/* istruzioni dal codice. Al termine, non devono essere più riferimenti allo spazio dei nomi globale firebase.* o a qualsiasi altro nello stile SDK della versione 8.

Vantaggi e limitazioni della versione 9

La versione 9 completamente modularizzata presenta i seguenti vantaggi rispetto alle versioni precedenti:

  • La versione 9 consente di ridurre drasticamente le dimensioni dell'app. Adotta il parametro moderno formato JavaScript del modulo, che consente il meccanismo pratiche in ma solo gli artefatti necessari alla tua app. In base all'app, la versione 9 può ridurre dell'80% i kilobyte in meno rispetto a un un'app analoga creata con la versione 8.
  • La versione 9 continuerà a beneficiare del continuo sviluppo di funzionalità, mentre la versione 8 sarà bloccata in futuro.