Durante lo sviluppo di un'app web utilizzando Firebase, potresti incontrare concetti sconosciuti o aree in cui hai bisogno di maggiori informazioni per prendere le decisioni giuste per il tuo progetto. Questa pagina ha lo scopo di rispondere a queste domande o di indirizzarti a risorse per saperne di più.
Se hai domande su un argomento non trattato in questa pagina, visita una delle nostre community online. Aggiorneremo periodicamente questa pagina con nuovi argomenti, quindi controlla di tanto in tanto per vedere se abbiamo aggiunto l'argomento che ti interessa.
Versioni dell'SDK: con spazio dei nomi e modulare
Firebase fornisce due interfacce API per le app web:
- JavaScript - namespaced. Si tratta dell'interfaccia JavaScript che Firebase ha gestito per molti anni ed è familiare agli sviluppatori web con app Firebase meno recenti. Poiché l'API con spazio dei nomi non beneficia del supporto continuo di nuove funzionalità, la maggior parte delle nuove app dovrebbe adottare l'API modulare.
- JavaScript - modular. Questo SDK si basa su un approccio modulare che fornisce dimensioni ridotte e maggiore efficienza con strumenti di build JavaScript moderni come webpack o Rollup.
L'API modulare si integra bene con gli strumenti di compilazione che rimuovono il codice non utilizzato nell'app, un processo noto come "tree-shaking". Le app create con questo SDK beneficiano di un'impronta di dimensioni notevolmente ridotte. L'API con spazio dei nomi, sebbene disponibile come modulo, non ha una struttura rigorosamente modulare e non offre lo stesso grado di riduzione delle dimensioni.
Sebbene la maggior parte dell'API modulare segua gli stessi pattern dell'API con spazi dei nomi,
l'organizzazione del codice è diversa. In genere, l'API con spazio dei nomi è
orientata a un pattern di spazio dei nomi e servizio, mentre l'API modulare è orientata
a funzioni discrete. Ad esempio, la concatenazione di punti dell'API con spazio dei nomi, ad esempio
firebaseApp.auth()
, viene sostituita nell'API modulare da una singola funzione getAuth()
che accetta firebaseApp
e restituisce un'istanza Authentication.
Ciò significa che le app web create con l'API con spazi dei nomi richiedono il refactoring per sfruttare la progettazione modulare delle app. Per ulteriori dettagli, consulta la guida all'upgrade.
JavaScript - API modulare per le nuove app
Se stai iniziando una nuova integrazione con Firebase, puoi attivare l'API modulare quando aggiungi e inizializzi l'SDK.
Durante lo sviluppo dell'app, tieni presente che il codice sarà organizzato principalmente intorno alle funzioni. Nell'API modulare, i servizi vengono passati come primo argomento e la funzione utilizza i dettagli del servizio per fare il resto. Ad esempio:
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
// Check for user status
});
Per altri esempi e dettagli, consulta le guide per ogni area di prodotto e la documentazione di riferimento dell'API modulare.
Modi per aggiungere gli SDK web alla tua app
Firebase fornisce librerie JavaScript per la maggior parte dei prodotti Firebase, tra cui Remote Config, FCM e altri. Il modo in cui aggiungi gli SDK Firebase alla tua app web dipende dagli strumenti che utilizzi con la tua app (ad esempio un bundler di moduli).
Puoi aggiungere una delle librerie disponibili alla tua app tramite uno dei metodi supportati:
- npm (per i bundler di moduli)
- CDN (Content Delivery Network)
Per istruzioni di configurazione dettagliate, vedi Aggiungere Firebase all'app JavaScript. Il resto di questa sezione contiene informazioni per aiutarti a scegliere tra le opzioni disponibili.
npm
Il download del pacchetto npm di Firebase (che include bundle per browser e Node.js) ti fornisce una copia locale dell'SDK Firebase, che potrebbe essere necessaria per applicazioni non browser come app Node.js, React Native o Electron. Il download include i bundle Node.js e React Native come opzione per alcuni pacchetti. I bundle Node.js sono necessari per il rendering lato server (SSR) dei framework SSR.
L'utilizzo di npm con un bundler di moduli come webpack o Rollup offre opzioni di ottimizzazione per "tree-shaking" del codice inutilizzato e l'applicazione di polyfill mirati, che possono ridurre notevolmente le dimensioni dell'app. L'implementazione di queste funzionalità può aggiungere una certa complessità alla configurazione e alla catena di build, ma vari strumenti CLI mainstream possono contribuire a mitigarla. Questi strumenti includono Angular, React, Vue, Next e altri.
In sintesi:
- Fornisce un'ottimizzazione preziosa delle dimensioni dell'app
- Sono disponibili strumenti efficaci per gestire i moduli
- Obbligatorio per il rendering lato server con Node.js
CDN (Content Delivery Network)
L'aggiunta di librerie archiviate sulla CDN di Firebase è un metodo di configurazione dell'SDK semplice e familiare a molti sviluppatori. Se utilizzi la CDN per aggiungere gli SDK, non avrai bisogno di uno strumento di compilazione e la tua catena di compilazione potrebbe essere più semplice e facile da utilizzare rispetto ai bundler di moduli. Se non ti preoccupa particolarmente la dimensione di installazione dell'app e non hai requisiti speciali come la transpilazione da TypeScript, la CDN potrebbe essere una buona scelta.
In sintesi:
- Familiare e semplice
- Adatto quando le dimensioni dell'app non sono un problema importante
- Adatto quando il tuo sito web non utilizza strumenti di compilazione.
Varianti dell'SDK web di Firebase
L'SDK web di Firebase può essere utilizzato sia nelle applicazioni browser che in quelle Node. Tuttavia, diversi prodotti non sono disponibili negli ambienti Node. Consulta l'elenco degli ambienti supportati.
Alcuni SDK di prodotto forniscono varianti separate per browser e Node, ognuna delle quali è disponibile nei formati ESM e CJS, e alcuni SDK di prodotto forniscono persino varianti Cordova o React Native. L'SDK web è configurato per fornire la variante corretta in base alla configurazione o all'ambiente degli strumenti e non dovrebbe richiedere la selezione manuale nella maggior parte dei casi. Tutte le varianti dell'SDK sono progettate per aiutare a creare app web o client per l'accesso degli utenti finali, ad esempio in un'applicazione Node.js desktop o IoT. Se il tuo obiettivo è configurare l'accesso amministrativo da ambienti privilegiati (come i server), utilizza Firebase Admin SDK.
Rilevamento dell'ambiente con bundler e framework
Quando installi l'SDK web Firebase utilizzando npm, vengono installate sia le versioni JavaScript che Node.js. Il pacchetto fornisce un rilevamento dettagliato dell'ambiente per attivare i bundle giusti per la tua applicazione.
Se il tuo codice utilizza istruzioni Node.js require
, l'SDK trova il bundle specifico per Node. In caso contrario, le impostazioni del bundler devono essere configurate correttamente per rilevare
il campo del punto di ingresso corretto nel file package.json
(ad esempio, main
,
browser
o module
). Se si verificano errori di runtime con l'SDK, verifica
che il bundler sia configurato per dare la priorità al tipo corretto di bundle
per il tuo ambiente.
Scopri di più sull'oggetto di configurazione Firebase
Per inizializzare Firebase nella tua app, devi fornire la configurazione Firebase dell'app. Puoi ottenere l'oggetto di configurazione Firebase in qualsiasi momento.
Non è consigliabile modificare manualmente l'oggetto di configurazione, in particolare le seguenti "opzioni Firebase" obbligatorie:
apiKey
,projectId
eappID
. Se inizializzi la tua app con valori non validi o mancanti per queste "opzioni Firebase" richieste, gli utenti della tua app potrebbero riscontrare gravi problemi. L'eccezione èauthDomain
, che può essere aggiornato seguendo le best practice per l'utilizzo di signInWithRedirect.Se hai abilitato Google Analytics nel tuo progetto Firebase, l'oggetto di configurazione contiene il campo
measurementId
. Scopri di più su questo campo nella pagina Guida introduttiva di Analytics.Se attivi Google Analytics o Realtime Database dopo aver creato la tua app web Firebase, assicurati che l'oggetto di configurazione Firebase che utilizzi nella tua app venga aggiornato con i valori di configurazione associati (
measurementId
edatabaseURL
, rispettivamente). Puoi ottenere l'oggetto di configurazione Firebase in qualsiasi momento.
Ecco il formato di un oggetto di configurazione con tutti i servizi abilitati (questi valori vengono compilati automaticamente):
var firebaseConfig = { apiKey: "API_KEY", authDomain: "PROJECT_ID.firebaseapp.com", // The value of `databaseURL` depends on the location of the database databaseURL: "https://DATABASE_NAME.firebaseio.com", projectId: "PROJECT_ID", // The value of `storageBucket` depends on when you provisioned your default bucket (learn more) storageBucket: "", messagingSenderId: "SENDER_ID", appId: "APP_ID", // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field measurementId: "G-MEASUREMENT_ID", }; PROJECT_ID.firebasestorage.app
Librerie disponibili
Opzioni di configurazione aggiuntive
Ritardare il caricamento degli SDK Firebase (dalla CDN)
Puoi ritardare l'inclusione degli SDK Firebase fino al caricamento dell'intera pagina. Se utilizzi script CDN API modulari con <script type="module">
,
questo è il comportamento predefinito. Se utilizzi script CDN con spazi dei nomi come
modulo, completa questi passaggi per posticipare il caricamento:
Aggiungi un flag
defer
a ogni tagscript
per gli SDK Firebase, poi posticipa l'inizializzazione di Firebase utilizzando un secondo script, ad esempio:<script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-app.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-auth.js"></script> <script defer src="https://www.gstatic.com/firebasejs/8.10.1/firebase-firestore.js"></script> // ... <script defer src="./init-firebase.js"></script>
Crea un file
init-firebase.js
, quindi includi quanto segue nel file:// TODO: Replace the following with your app's Firebase configuration var firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig);
Utilizzare più progetti Firebase in una singola app
Nella maggior parte dei casi, devi inizializzare Firebase in una sola app predefinita. Puoi accedere a Firebase da questa app in due modi equivalenti:
Web
import { initializeApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a "default" Firebase project const defaultProject = initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = getStorage(defaultProject); let defaultFirestore = getFirestore(defaultProject); // Option 2: Access Firebase services using shorthand notation defaultStorage = getStorage(); defaultFirestore = getFirestore();
Web
// Initialize Firebase with a "default" Firebase project const defaultProject = firebase.initializeApp(firebaseConfig); console.log(defaultProject.name); // "[DEFAULT]" // Option 1: Access Firebase services via the defaultProject variable let defaultStorage = defaultProject.storage(); let defaultFirestore = defaultProject.firestore(); // Option 2: Access Firebase services using shorthand notation defaultStorage = firebase.storage(); defaultFirestore = firebase.firestore();
A volte, però, devi accedere a più progetti Firebase contemporaneamente. Ad esempio, potresti voler leggere i dati dal database di un progetto Firebase, ma archiviare i file in un progetto Firebase diverso. Oppure potresti voler autenticare un progetto mantenendo non autenticato un secondo progetto.
L'SDK Firebase JavaScript ti consente di inizializzare e utilizzare più progetti Firebase in una singola app contemporaneamente, con ogni progetto che utilizza le proprie informazioni di configurazione di Firebase.
Web
import { initializeApp, getApp } from "firebase/app"; import { getStorage } from "firebase/storage"; import { getFirestore } from "firebase/firestore"; // Initialize Firebase with a default Firebase project initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = initializeApp(otherProjectFirebaseConfig, "other"); console.log(getApp().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = getStorage(); const defaultFirestore = getFirestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = getStorage(otherProject); const otherFirestore = getFirestore(otherProject);
Web
// Initialize Firebase with a default Firebase project firebase.initializeApp(firebaseConfig); // Initialize Firebase with a second Firebase project const otherProject = firebase.initializeApp(otherProjectFirebaseConfig, "other"); console.log(firebase.app().name); // "[DEFAULT]" console.log(otherProject.name); // "otherProject" // Use the shorthand notation to access the default project's Firebase services const defaultStorage = firebase.storage(); const defaultFirestore = firebase.firestore(); // Use the otherProject variable to access the second project's Firebase services const otherStorage = otherProject.storage(); const otherFirestore = otherProject.firestore();
Esegui un server web locale per lo sviluppo
Se stai creando un'app web, alcune parti dell'SDK Firebase JavaScript richiedono di gestire l'app web da un server anziché dal file system locale. Puoi utilizzare l'interfaccia a riga di comando Firebase per eseguire un server locale.
Se hai già configurato Firebase Hosting per la tua app, potresti aver già completato diversi dei passaggi riportati di seguito.
Per gestire la tua app web, utilizzerai la CLI Firebase, uno strumento a riga di comando.
Visita la documentazione della CLI Firebase per scoprire come installare la CLI o eseguire l'aggiornamento all'ultima versione.
Inizializza il progetto Firebase. Esegui questo comando dalla radice della directory dell'app locale:
firebase init
Avvia il server locale per lo sviluppo. Esegui il comando seguente dalla radice della directory dell'app locale:
firebase serve
Risorse open source per gli SDK Firebase JavaScript
Firebase supporta lo sviluppo open source e incoraggia i contributi e il feedback della community.
SDK Firebase JavaScript
La maggior parte degli SDK Firebase JavaScript sono sviluppati come librerie open source nel nostro repository GitHub Firebase pubblico.
Esempi di avvio rapido
Firebase gestisce una raccolta di esempi di avvio rapido per la maggior parte delle API Firebase sul web. Trova queste guide rapide nel nostro repository GitHub di avvio rapido di Firebase pubblico. Puoi utilizzare questi quickstart come codice di esempio per l'utilizzo degli SDK Firebase.