Lorsque vous développez une application Web à l'aide de Firebase, vous pouvez rencontrer des concepts inconnus ou des domaines pour lesquels vous avez besoin de plus d'informations afin de prendre les bonnes décisions pour votre projet. Cette page vise à répondre à ces questions ou à vous orienter vers des ressources pour en savoir plus.
Si vous avez des questions sur un sujet qui n'est pas abordé sur cette page, consultez l'une de nos communautés en ligne. Nous ajouterons également de nouveaux thèmes à cette page de temps en temps. N'hésitez pas à la consulter régulièrement pour voir si nous avons ajouté le thème qui vous intéresse.
Versions du SDK : avec espace de noms et modulaires
Firebase fournit deux surfaces d'API pour les applications Web :
- JavaScript : espace de noms. Il s'agit de l'interface JavaScript que Firebase a gérée pendant de nombreuses années et que les développeurs Web connaissent bien avec les anciennes applications Firebase. Étant donné que l'API avec espace de noms ne bénéficie pas de la prise en charge continue des nouvelles fonctionnalités, la plupart des nouvelles applications doivent plutôt adopter l'API modulaire.
- JavaScript – modulaire Ce SDK est basé sur une approche modulaire qui réduit la taille du SDK et améliore l'efficacité avec les outils de compilation JavaScript modernes tels que webpack ou Rollup.
L'API modulaire s'intègre bien aux outils de compilation qui suppriment le code inutilisé dans votre application, un processus appelé "tree-shaking". Les applications conçues avec ce SDK bénéficient d'une empreinte de taille considérablement réduite. Bien que l'API avec espace de noms soit disponible en tant que module, elle ne possède pas de structure strictement modulaire et ne permet pas de réduire la taille dans la même mesure.
Bien que la majorité de l'API modulaire suive les mêmes modèles que l'API avec espace de noms, l'organisation du code est différente. En général, l'API avec espace de noms est orientée vers un schéma d'espace de noms et de service, tandis que l'API modulaire est orientée vers des fonctions discrètes. Par exemple, l'enchaînement de points de l'API avec espace de noms, tel que firebaseApp.auth()
, est remplacé dans l'API modulaire par une seule fonction getAuth()
qui prend firebaseApp
et renvoie une instance Authentication.
Cela signifie que les applications Web créées avec l'API avec espace de noms doivent être refactorisées pour tirer parti de la conception modulaire des applications. Pour en savoir plus, consultez le guide de mise à niveau.
JavaScript : API modulaire pour les nouvelles applications
Si vous commencez une nouvelle intégration avec Firebase, vous pouvez activer l'API modulaire lorsque vous ajoutez et initialisez le SDK.
Lorsque vous développez votre application, gardez à l'esprit que votre code sera principalement organisé autour de fonctions. Dans l'API modulaire, les services sont transmis en tant que premier argument, et la fonction utilise ensuite les détails du service pour faire le reste. Exemple :
import { getAuth, onAuthStateChanged } from "firebase/auth";
const auth = getAuth(firebaseApp);
onAuthStateChanged(auth, user => {
// Check for user status
});
Pour obtenir d'autres exemples et plus de détails, consultez les guides pour chaque domaine de produit ainsi que la documentation de référence de l'API modulaire.
Méthodes d'ajout des SDK Web à votre application
Firebase fournit des bibliothèques JavaScript pour la plupart des produits Firebase, y compris Remote Config, FCM et plus encore. La façon dont vous ajoutez les SDK Firebase à votre application Web dépend des outils que vous utilisez avec votre application (comme un bundler de modules).
Vous pouvez ajouter l'une des bibliothèques disponibles à votre application à l'aide de l'une des méthodes compatibles :
- npm (pour les bundlers de modules)
- CDN (réseau de diffusion de contenu)
Pour obtenir des instructions de configuration détaillées, consultez Ajouter Firebase à votre application JavaScript. Le reste de cette section contient des informations pour vous aider à choisir parmi les options disponibles.
npm
Le téléchargement du package npm Firebase (qui inclut les bundles pour navigateur et Node.js) vous fournit une copie locale du SDK Firebase, qui peut être nécessaire pour les applications non liées à un navigateur, telles que les applications Node.js, React Native ou Electron. Le téléchargement inclut les bundles Node.js et React Native en option pour certains packages. Les bundles Node.js sont nécessaires pour l'étape de rendu côté serveur (SSR) des frameworks SSR.
L'utilisation de npm avec un module bundler tel que webpack ou Rollup offre des options d'optimisation pour "tree-shaker" le code inutilisé et appliquer des polyfills ciblés, ce qui peut réduire considérablement l'empreinte de taille de votre application. L'implémentation de ces fonctionnalités peut ajouter une certaine complexité à votre configuration et à votre chaîne de compilation, mais divers outils CLI courants peuvent vous aider à l'atténuer. Ces outils incluent Angular, React, Vue, Next, etc.
En résumé :
- Fournit une optimisation précieuse de la taille de l'application
- Des outils robustes sont disponibles pour gérer les modules.
- Obligatoire pour le rendu côté serveur avec Node.js
CDN (réseau de diffusion de contenu)
L'ajout de bibliothèques stockées sur le CDN de Firebase est une méthode de configuration simple du SDK que de nombreux développeurs connaissent peut-être. Si vous utilisez le CDN pour ajouter les SDK, vous n'aurez pas besoin d'outil de compilation. Votre chaîne de compilation sera probablement plus simple et plus facile à utiliser que les bundlers de modules. Si la taille installée de votre application ne vous préoccupe pas particulièrement et que vous n'avez pas d'exigences particulières, comme la transcompilation à partir de TypeScript, le CDN peut être un bon choix.
En résumé :
- Simple et intuitif
- Convient lorsque la taille de l'application n'est pas une préoccupation majeure
- Convient lorsque votre site Web n'utilise pas d'outils de compilation.
Variantes du SDK Web Firebase
Le SDK Web de Firebase peut être utilisé dans les applications de navigateur et Node. Toutefois, plusieurs produits ne sont pas disponibles dans les environnements Node. Consultez la liste des environnements compatibles.
Certains SDK de produits fournissent des variantes distinctes pour le navigateur et Node, chacune étant disponible aux formats ESM et CJS. Certains SDK de produits fournissent même des variantes Cordova ou React Native. Le SDK Web est configuré pour fournir la variante appropriée en fonction de la configuration de votre outil ou de votre environnement. Dans la plupart des cas, vous n'aurez pas besoin de la sélectionner manuellement. Toutes les variantes du SDK sont conçues pour vous aider à créer des applications Web ou des applications clientes pour l'accès des utilisateurs finaux, par exemple dans une application Node.js pour ordinateur ou IoT. Si votre objectif est de configurer un accès administrateur à partir d'environnements privilégiés (tels que des serveurs), utilisez plutôt Firebase Admin SDK.
Détection de l'environnement avec des bundlers et des frameworks
Lorsque vous installez le SDK Web Firebase à l'aide de npm, les versions JavaScript et Node.js sont toutes les deux installées. Le package fournit une détection détaillée de l'environnement pour activer les bons bundles pour votre application.
Si votre code utilise des instructions Node.js require
, le SDK trouve le bundle spécifique à Node. Sinon, les paramètres de votre bundler doivent être correctement configurés pour détecter le bon champ de point d'entrée dans votre fichier package.json
(par exemple, main
, browser
ou module
). Si vous rencontrez des erreurs d'exécution avec le SDK, vérifiez que votre bundler est configuré pour donner la priorité au bon type de bundle pour votre environnement.
En savoir plus sur l'objet de configuration Firebase
Pour initialiser Firebase dans votre application, vous devez fournir la configuration Firebase de votre application. Vous pouvez obtenir votre objet de configuration Firebase à tout moment.
Nous vous déconseillons de modifier manuellement votre objet de configuration, en particulier les "options Firebase" requises suivantes :
apiKey
,projectId
etappID
. Si vous initialisez votre application avec des valeurs non valides ou manquantes pour ces "options Firebase" requises, les utilisateurs de votre application peuvent rencontrer de graves problèmes. La seule exception estauthDomain
, qui peut être mis à jour en suivant les bonnes pratiques pour utiliser signInWithRedirect.Si vous avez activé Google Analytics dans votre projet Firebase, votre objet de configuration contient le champ
measurementId
. Pour en savoir plus sur ce champ, consultez la page Premiers pas avec Analytics.Si vous activez Google Analytics ou Realtime Database après avoir créé votre application Web Firebase, assurez-vous que l'objet de configuration Firebase que vous utilisez dans votre application est mis à jour avec les valeurs de configuration associées (
measurementId
etdatabaseURL
, respectivement). Vous pouvez obtenir votre objet de configuration Firebase à tout moment.
Voici le format d'un objet de configuration avec tous les services activés (ces valeurs sont renseignées automatiquement) :
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
Bibliothèques disponibles
Autres options de configuration
Retarder le chargement des SDK Firebase (depuis le CDN)
Vous pouvez retarder l'inclusion des SDK Firebase jusqu'à ce que la page entière soit chargée. Si vous utilisez des scripts CDN d'API modulaires avec <script type="module">
, il s'agit du comportement par défaut. Si vous utilisez des scripts CDN avec espace de noms en tant que module, procédez comme suit pour différer le chargement :
Ajoutez un indicateur
defer
à chaque balisescript
pour les SDK Firebase, puis reportez l'initialisation de Firebase à l'aide d'un deuxième script, par exemple :<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>
Créez un fichier
init-firebase.js
, puis incluez-y les éléments suivants :// TODO: Replace the following with your app's Firebase configuration var firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig);
Utiliser plusieurs projets Firebase dans une même application
Dans la plupart des cas, il vous suffit d'initialiser Firebase dans une seule application par défaut. Vous pouvez accéder à Firebase depuis cette application de deux manières équivalentes :
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();
Toutefois, il est parfois nécessaire d'accéder à plusieurs projets Firebase en même temps. Par exemple, vous pouvez lire des données à partir de la base de données d'un projet Firebase, mais stocker des fichiers dans un autre projet Firebase. Vous pouvez également authentifier un projet tout en gardant un deuxième projet non authentifié.
Le SDK Firebase JavaScript vous permet d'initialiser et d'utiliser plusieurs projets Firebase dans une même application en même temps, chaque projet utilisant ses propres informations de configuration 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();
Exécuter un serveur Web local pour le développement
Si vous créez une application Web, certaines parties du SDK Firebase JavaScript nécessitent que vous diffusiez votre application Web à partir d'un serveur plutôt que du système de fichiers local. Vous pouvez utiliser la CLI Firebase pour exécuter un serveur local.
Si vous avez déjà configuré Firebase Hosting pour votre application, vous avez peut-être déjà effectué plusieurs des étapes ci-dessous.
Pour diffuser votre application Web, vous utiliserez la CLI Firebase, un outil de ligne de commande.
Consultez la documentation de la CLI Firebase pour savoir comment installer la CLI ou passer à sa dernière version.
Initialisez votre projet Firebase. Exécutez la commande suivante à partir de la racine du répertoire de votre application locale :
firebase init
Démarrez le serveur local pour le développement. Exécutez la commande suivante à partir de la racine du répertoire de votre application locale :
firebase serve
Ressources Open Source pour les SDK JavaScript Firebase
Firebase est compatible avec le développement Open Source. Nous encourageons les contributions et les commentaires de la communauté.
SDK JavaScript Firebase
La plupart des SDK JavaScript Firebase sont développés en tant que bibliothèques Open Source dans notre dépôt GitHub Firebase public.
Exemples de démarrage rapide
Firebase propose une collection d'exemples de démarrage rapide pour la plupart des API Firebase sur le Web. Retrouvez ces guides de démarrage rapide dans notre dépôt GitHub public de guides de démarrage rapide Firebase. Vous pouvez utiliser ces guides de démarrage rapide comme exemples de code pour utiliser les SDK Firebase.