En savoir plus sur Web et Firebase

Lorsque vous développez une application Web à l'aide de Firebase, vous pouvez rencontrer des concepts inconnus ou des domaines dans lesquels vous avez besoin de plus d'informations pour prendre les bonnes décisions pour votre projet. Cette page vise à répondre à ces questions ou à vous diriger vers des ressources pour en savoir plus.

Si vous avez des questions sur un sujet non traité sur cette page, visitez l'une de nos communautés en ligne . Nous mettrons également régulièrement à jour cette page avec de nouveaux sujets, alors revenez pour voir si nous avons ajouté le sujet sur lequel vous souhaitez en savoir plus.

Versions SDK : espace de noms et modulaire

Firebase fournit deux surfaces d'API pour les applications Web :

  • JavaScript - espace de noms. Il s'agit de l'interface JavaScript que Firebase a maintenue pendant de nombreuses années et qui est familière aux développeurs Web avec des applications Firebase plus anciennes. Étant donné que l'API à espace de noms ne bénéficie pas d'une prise en charge continue des nouvelles fonctionnalités, la plupart des nouvelles applications devraient plutôt adopter l'API modulaire.
  • JavaScript - modulaire . Ce SDK est basé sur une approche modulaire qui offre une taille de SDK réduite et une plus grande efficacité avec des outils de construction JavaScript modernes tels que webpack ou Rollup .

L'API modulaire s'intègre bien aux outils de construction qui suppriment le code qui n'est pas utilisé dans votre application, un processus connu sous le nom de "tree-shaking". Les applications créées avec ce SDK bénéficient d'empreintes de taille considérablement réduites. L'API namespaced, bien que disponible sous forme de module, n'a pas une structure strictement modulaire et ne fournit pas le même degré de réduction de taille.

Bien que la majorité de l'API modulaire suive les mêmes modèles que l'API à espace de noms, l'organisation du code est différente. Généralement, l'API à espace de noms est orientée vers un espace de noms et un modèle de service, tandis que l'API modulaire est orientée vers des fonctions discrètes. Par exemple, le chaînage de points de l'API à 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 d'authentification.

Cela signifie que les applications Web créées avec l'API à espace de noms nécessitent une refactorisation afin de tirer parti de la conception d'applications modulaires. Consultez le guide de mise à niveau pour plus de détails.

Qu'est-ce qui est pris en charge ?

Bien que l'API à espace de noms et l'API modulaire aient des styles de code différents, elles offrent une prise en charge très similaire des fonctionnalités et options de Firebase. Comme nous le décrirons en détail dans ce guide, les deux versions du SDK prennent en charge les variantes JavaScript et Node.js ainsi que plusieurs options pour ajouter/installer les SDK.

Ajouter des SDK avec Espace de noms Modulaire
npm
  • Pour JavaScript
  • Pour Node.js
  • Pour JavaScript
  • Pour Node.js
CDN (réseau de diffusion de contenu)
  • Pour JavaScript
  • Pour JavaScript
URL d'hébergement
  • Pour JavaScript
  • Pour Node.js

Pour plus d'informations, consultez Façons d'ajouter les SDK Web à votre application et les variantes du SDK Web Firebase plus loin sur cette page.

JavaScript - API modulaire pour les nouvelles applications

Si vous démarrez 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 comme premier argument, et la fonction utilise ensuite les détails du service pour faire le reste. Par exemple:

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

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

Pour plus d'exemples et de détails, consultez les guides de chaque domaine de produit ainsi que la documentation de référence de l'API modulaire .

Façons d'ajouter les SDK Web à votre application

Firebase fournit des bibliothèques JavaScript pour la plupart des produits Firebase, notamment Remote Config, FCM, etc. La façon dont vous ajoutez des SDK Firebase à votre application Web dépend des outils que vous utilisez avec votre application (comme un bundle de modules) ou si votre application s'exécute dans un environnement sans navigateur tel que Node.js.

Vous pouvez ajouter l'une des bibliothèques disponibles à votre application via l'une des méthodes compatibles :

  • npm (pour les bundlers de modules et Node.js)
  • 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 Firebase npm (qui inclut à la fois les bundles navigateur et Node.js) vous fournit une copie locale du SDK Firebase, qui peut être nécessaire pour les applications non-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 groupeur de modules tel que webpack ou Rollup fournit des options d'optimisation pour "arborescence" du code inutilisé et appliquer des polyfills ciblés, ce qui peut réduire considérablement l'empreinte de taille de votre application. La mise en œuvre de ces fonctionnalités peut ajouter une certaine complexité à votre configuration et à votre chaîne de construction, mais divers outils CLI courants peuvent aider à atténuer cela. Ces outils incluent Angular , React , Vue , Next et autres.

En résumé:

  • Fournit une optimisation précieuse de la taille de l'application
  • Des outils robustes sont disponibles pour gérer les modules
  • Requis pour SSR 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 SDK simple qui peut être familière à de nombreux développeurs. En utilisant le CDN pour ajouter les SDK, vous n'aurez pas besoin d'un outil de construction, et votre chaîne de construction peut avoir tendance à être plus simple et plus facile à utiliser par rapport aux bundlers de modules. Si vous n'êtes pas particulièrement préoccupé par la taille installée de votre application et que vous n'avez pas d'exigences particulières telles que la transpilation à partir de TypeScript, alors CDN pourrait être un bon choix.

En résumé:

  • Familier et simple
  • 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 construction.

Variantes du SDK Web Firebase

Actuellement, Firebase propose deux variantes du SDK Web :

  • Un ensemble JavaScript prenant en charge toutes les fonctionnalités de Firebase à utiliser dans le navigateur.
  • Un bundle Node.js côté client qui prend en charge de nombreuses fonctionnalités Firebase, mais pas toutes. Consultez la liste des environnements pris en charge .

Ces deux variantes de SDK sont conçues pour aider à créer des applications Web ou des applications clientes pour l'accès des utilisateurs finaux, comme dans un bureau Node.js ou une application IoT. Si votre objectif est de configurer un accès administratif à partir d'environnements privilégiés (tels que des serveurs), utilisez plutôt le SDK Firebase Admin .

Détection d'environnement avec bundlers et frameworks

Lorsque vous installez le SDK Web Firebase à l'aide de npm, les versions JavaScript et Node.js sont toutes 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 définis 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 du projet 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 et appID . 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.

  • 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 de démarrage d'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 et databaseURL , 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 automatiquement renseignées) :

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",
  storageBucket: "PROJECT_ID.appspot.com",
  messagingSenderId: "SENDER_ID",
  appId: "APP_ID",
  // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
  measurementId: "G-MEASUREMENT_ID",
};

Bibliothèques disponibles

Options de configuration supplémentaires

Retarder le chargement des SDK Firebase (depuis 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 version 9 avec <script type="module"> , il s'agit du comportement par défaut. Si vous utilisez des scripts CDN version 8 en tant que module, procédez comme suit pour différer le chargement :

  1. Ajoutez un indicateur defer à chaque balise script pour les SDK Firebase, puis différez 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>
    
  2. Créez un fichier init-firebase.js , puis incluez les éléments suivants dans le fichier :

    // TODO: Replace the following with your app's Firebase project configuration
    var firebaseConfig = {
      // ...
    };
    
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    

Utiliser plusieurs projets Firebase dans une seule application

Dans la plupart des cas, vous n'avez qu'à initialiser Firebase dans une seule application par défaut. Vous pouvez accéder à Firebase à partir de cette application de deux manières équivalentes :

Web modular API

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 namespaced API

// 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();

Parfois, cependant, vous devez accéder à plusieurs projets Firebase en même temps. Par exemple, vous souhaiterez peut-être lire les données de la base de données d'un projet Firebase, mais stocker les fichiers dans un autre projet Firebase. Ou vous voudrez peut-être 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 seule application en même temps, chaque projet utilisant ses propres informations de configuration Firebase.

Web modular API

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 namespaced API

// 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 JavaScript Firebase nécessitent que vous diffusiez votre application Web à partir d'un serveur plutôt qu'à partir 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 servir votre application Web, vous utiliserez la CLI Firebase, un outil de ligne de commande.

  1. Consultez la documentation de l'interface de ligne de commande Firebase pour savoir comment installer l'interface de ligne de commande ou mettre à jour vers sa dernière version .

  2. Initialisez votre projet Firebase. Exécutez la commande suivante à partir de la racine du répertoire de votre application locale :

    firebase init

  3. 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 prend en charge le développement open source, et nous encourageons les contributions et les commentaires de la communauté.

SDK JavaScript Firebase

La plupart des SDK Firebase JavaScript sont développés en tant que bibliothèques open source dans notre référentiel public Firebase GitHub .

Exemples de démarrage rapide

Firebase gère 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 public de démarrage rapide Firebase GitHub . Vous pouvez utiliser ces guides de démarrage rapide comme exemple de code pour utiliser les SDK Firebase.