```html
Parmi les outils de développement récents les plus passionnants, on trouve Bun, une boîte à outils JavaScript tout-en-un incroyablement rapide, conçue pour améliorer la productivité des développeurs et les performances des applications. Bun n'est pas seulement un autre runtime ; c'est un écosystème cohérent englobant un runtime, un bundler, un test runner, un gestionnaire de paquets, et plus encore, le tout dans un seul exécutable natif. Ce guide vous présentera les éléments essentiels de Bun, en mettant l'accent sur ses concepts de base et ses API puissantes.
Vous voulez une plateforme intégrée, tout-en-un, pour que votre équipe de développeurs travaille ensemble avec une productivité maximale ?
Apidog répond à toutes vos demandes et remplace Postman à un prix beaucoup plus abordable !
Qu'est-ce que Bun ?

À la base, Bun est construit autour d'un moteur d'exécution JavaScript haute performance. Contrairement à Node.js, qui utilise le moteur V8 de Google, Bun utilise JavaScriptCore (JSC) d'Apple, le moteur qui alimente Safari. Ce choix, combiné à l'implémentation de Bun dans le langage de programmation bas niveau Zig, contribue de manière significative à sa vitesse remarquable. Les temps de démarrage des applications Bun sont souvent mesurés comme étant considérablement plus rapides que les applications Node.js équivalentes, parfois d'un facteur de quatre ou plus. Cet avantage de vitesse s'étend au-delà du simple démarrage ; les implémentations internes de Bun de diverses API sont optimisées pour un débit maximal et une utilisation minimale de la mémoire.
Mais l'ambition de Bun va bien au-delà d'être simplement un runtime plus rapide. Il vise à être une boîte à outils complète, répondant directement aux besoins courants des développeurs :
- Outils intégrés : La commande
bun
elle-même sert de point d'entrée pour de nombreuses fonctionnalités.bun run
exécute les scripts définis danspackage.json
,bun install
gère les dépendances (souvent beaucoup plus rapidement que npm ou yarn),bun test
exécute les tests à l'aide d'une API compatible Jest,bun build
regroupe le code pour la production etbunx
exécute les paquets sans les installer explicitement. Cette intégration simplifie les flux de travail en réduisant le nombre d'outils de développement distincts nécessaires. - Prise en charge native de TypeScript et JSX : L'une des fonctionnalités les plus remarquables de Bun est sa prise en charge prête à l'emploi des fichiers TypeScript (
.ts
,.tsx
) et JSX (.jsx
). Bun inclut un transpiler intégré et hautement optimisé qui gère ces types de fichiers de manière transparente pendant l'exécution ou le regroupement. Cela élimine le besoin d'étapes de compilation distinctes impliquanttsc
ou Babel pour de nombreux scénarios de développement courants, ce qui simplifie le processus de configuration. - Compatibilité du système de modules : Bun adopte JavaScript moderne avec une prise en charge de premier ordre des modules ES (ESM). Cependant, il reconnaît le vaste écosystème existant construit sur CommonJS (CJS). Bun offre une compatibilité robuste pour les deux systèmes de modules, permettant aux développeurs d'utiliser
import
etrequire
de manière largement interchangeable et de tirer parti des millions de paquets CJS existants disponibles sur npm. - Adhésion à l'API Web Standard : Un principe de conception clé est l'implémentation des API Web standard. Les fonctions et les objets comme
fetch
,Request
,Response
,Headers
,WebSocket
et l'API Streams (ReadableStream
,WritableStream
) sont intégrés à la portée globale de Bun. Cela favorise la portabilité du code entre les environnements Bun côté serveur, les frontaux de navigateur et les plateformes de calcul de pointe, permettant aux développeurs de réutiliser des API familières dans différents contextes. - Compatibilité Node.js : Tout en traçant sa propre voie avec des API optimisées et des normes Web, Bun vise un haut degré de compatibilité avec la surface de l'API Node.js. De nombreux modules Node.js intégrés (
node:fs
,node:path
,node:os
,node:events
, etc.) et objets globaux (process
,Buffer
,__filename
,__dirname
) sont partiellement ou entièrement implémentés. L'objectif est de permettre à de nombreux projets Node.js et paquets npm existants de s'exécuter sur Bun avec un minimum de modifications, positionnant Bun comme un potentiel « remplacement direct » dans de nombreux cas.
En combinant ces éléments, Bun présente une alternative convaincante pour les développeurs JavaScript et TypeScript recherchant la performance, la simplicité et une expérience de développement moderne.

Comment installer Bun
La prise en main de Bun est conçue pour être rapide et simple sur diverses plateformes. La méthode la plus courante pour macOS, Linux et Windows Subsystem for Linux (WSL) utilise une simple commande curl
exécutée dans votre terminal :
curl -fsSL https://bun.sh/install | bash
Cette commande télécharge un script d'installation et le transmet directement à bash
. Le script gère la détection de votre système d'exploitation et de votre architecture, télécharge l'exécutable Bun approprié et l'installe généralement dans ~/.bun/bin
. Il tente également de mettre à jour le fichier de configuration de votre shell (comme .zshrc
, .bashrc
ou .bash_profile
) pour ajouter ~/.bun/bin
au PATH
de votre système, rendant la commande bun
globalement disponible. Vous devrez peut-être redémarrer votre session de terminal ou sourcer manuellement le fichier de configuration de votre shell (par exemple, source ~/.zshrc
) pour que les modifications prennent effet immédiatement.
Si vous rencontrez des problèmes d'autorisation ou si vous préférez ne pas transmettre directement à bash
, vous pouvez d'abord télécharger le script et l'inspecter avant de l'exécuter :
curl -fsSL https://bun.sh/install -o install.sh
# Inspect install.sh if desired
bash install.sh
Autres méthodes d'installation :
- NPM : Bien qu'il soit principalement destiné à être un outil autonome, vous pouvez également installer Bun globalement via npm, ce qui peut être pratique dans les environnements où Node.js et npm sont déjà présents :
npm install -g bun
- Docker : Des images Docker officielles de Bun sont disponibles sur Docker Hub, fournissant des environnements isolés avec Bun préinstallé. Ceux-ci sont utiles pour le développement et les flux de travail de déploiement conteneurisés. Vous pouvez trouver diverses images basées sur différentes distributions de système d'exploitation de base (comme Debian, Alpine) et des balises correspondant à des versions spécifiques de Bun.
docker run --rm --init --ulimit memlock=-1:-1 oven/bun:latest bun --version
- Windows : La prise en charge native de Windows pour Bun est toujours considérée comme expérimentale, mais elle est activement en cours de développement. La méthode recommandée pour utiliser Bun sur Windows est actuellement via WSL. Cependant, des builds Windows directs sont en cours de développement, et le processus d'installation peut impliquer le téléchargement d'une archive
.zip
et l'ajout manuel de l'emplacement de l'exécutable auPATH
du système. Consultez la documentation officielle de Bun pour connaître le statut et les instructions les plus récents pour l'installation native de Windows. - Homebrew (macOS) : Si vous utilisez Homebrew sur macOS, vous pouvez installer Bun via son tap :
brew tap oven-sh/bun
brew install bun
Vérification :
Une fois installé, ouvrez une nouvelle fenêtre de terminal et vérifiez l'installation en vérifiant la version :
bun --version
Cela devrait afficher le numéro de version installé, confirmant que Bun est prêt à être utilisé. Vous pouvez également exécuter bun --help
pour voir une liste des commandes et options disponibles.
Exécuter votre Bun pour la première fois
Plongeons-nous dans l'écriture et l'exécution d'un programme simple avec Bun. L'une des tâches les plus courantes consiste à créer un serveur HTTP. Bun fournit une API intégrée et hautement optimisée à cet effet : Bun.serve
.
Créez un nouveau fichier nommé server.js
(ou server.ts
, car Bun gère les deux) :
// server.ts
// Bun.serve démarre le serveur HTTP
const server = Bun.serve({
// Spécifiez le port sur lequel écouter.
// Par défaut, process.env.PORT || 3000
port: 3000,
// La fonction 'fetch' est le gestionnaire de requêtes principal.
// Il reçoit un objet Request standard et doit renvoyer un objet Response (ou une Promise qui en résout un).
fetch(request: Request): Response {
// Crée un objet Response d'API Web standard
return new Response("Welcome to Bun!");
},
});
// Enregistre un message indiquant que le serveur est en cours d'exécution
console.log(`Listening on http://localhost:${server.port}`);
Ce snippet de code fait ce qui suit :
- Il appelle
Bun.serve
, la fonction principale pour la création de serveurs HTTP dans Bun. - Il transmet un objet de configuration, en spécifiant le
port
(3000 dans ce cas). - La partie cruciale est la fonction
fetch
. Cette fonction est appelée pour chaque requête HTTP entrante. Elle s'aligne sur le modèle de gestionnaire d'événements fetch de Service Worker, acceptant un objetRequest
standard. - À l'intérieur de
fetch
, nous construisons et renvoyons un objetResponse
standard. Ici, nous renvoyons simplement du texte brut « Welcome to Bun ! ». - Enfin, nous enregistrons un message de confirmation dans la console, y compris le port réel sur lequel le serveur écoute (accessible via
server.port
).
Pour exécuter ce serveur, ouvrez votre terminal dans le répertoire où vous avez enregistré le fichier et exécutez :
bun run server.ts
Ou, si vous l'avez enregistré sous le nom de server.js
:
bun run server.js
Bun exécutera le script. Si vous avez utilisé TypeScript (server.ts
), le transpiler interne de Bun gérera la conversion en JavaScript à la volée avant l'exécution. Vous verrez le message « Listening on http://localhost:3000 ».
Maintenant, ouvrez votre navigateur Web et accédez à http://localhost:3000
. Vous devriez voir le texte « Welcome to Bun ! » affiché.
Pour arrêter le serveur, revenez à votre terminal et appuyez sur Ctrl + C
.
Cet exemple simple démontre la facilité de configurer un serveur de base et d'exécuter du code (y compris TypeScript) directement avec Bun, mettant en valeur sa nature intégrée et sa dépendance aux API Web Standard comme Request
et Response
.
Quelle est la prise en charge native de TypeScript dans Bun
L'un des avantages les plus importants de Bun, en particulier pour les développeurs qui utilisent déjà ou souhaitent adopter TypeScript, est sa prise en charge de premier ordre et prête à l'emploi. Contrairement à Node.js, où l'exécution de TypeScript nécessite généralement une pré-compilation à l'aide du compilateur TypeScript (tsc
) ou l'utilisation de chargeurs/registres comme ts-node
ou tsx
, Bun le gère nativement et de manière transparente.
Comment ça marche :
Lorsque vous demandez à Bun d'exécuter un fichier .ts
ou .tsx
(par exemple, bun run myscript.ts
), il appelle automatiquement son transpiler interne. Ce transpiler est écrit en code natif (Zig) et est extrêmement rapide. Son travail consiste à :
- Supprimer les types : Supprimer les annotations de type TypeScript, les interfaces, les énumérations, etc., car celles-ci ne font pas partie de l'exécution JavaScript standard.
- Transformer la syntaxe : Convertir la syntaxe spécifique à TypeScript (comme certaines utilisations d'
enum
ou l'ancienne syntaxe de décorateur si configurée) en JavaScript équivalent. - Gérer JSX : Transformer la syntaxe JSX (utilisée dans les fichiers
.tsx
et.jsx
) en appels de fonction JavaScript standard (généralementReact.createElement
ou un équivalent de runtime JSX configuré).
L'avantage clé est que cela se produit à la volée pendant l'exécution (bun run
) ou le processus de regroupement (bun build
). Il n'y a pas d'étape de construction distincte et explicite requise juste pour exécuter votre code TypeScript pendant le développement.
Exemple :
Considérez ce fichier TypeScript (greet.ts
) :
// greet.ts
interface User {
name: string;
id: number;
}
function greetUser(user: User): void {
console.log(`Hello, ${user.name} (ID: ${user.id})!`);
}
const myUser: User = { name: "Bun Developer", id: 123 };
greetUser(myUser);
// Vous pouvez même utiliser les fonctionnalités modernes prises en charge par Bun
const message = `Bun version: ${Bun.version}`;
console.log(message);
Vous pouvez l'exécuter directement :
bun run greet.ts
Bun le transpilera en interne et exécutera le JavaScript résultant, produisant une sortie comme :
Hello, Bun Developer (ID: 123)!
Bun version: 1.x.y
Prise en charge de JSX :
De même, si vous avez un fichier .tsx
avec JSX :
// component.tsx
// En supposant que vous ayez JSX configuré (les valeurs par défaut de Bun fonctionnent souvent avec React)
function MyComponent({ name }: { name: string }) {
return <div className="greeting">Hello, {name}!</div>;
}
// REMARQUE : L'exécution directe de ceci ne rendra pas HTML,
// il montre juste la structure JS transpilée.
// Vous l'utiliseriez généralement dans une application ou un framework plus grand.
console.log("Simuler la création de composants (structure de sortie transpilée) :");
// La sortie réelle dépend des paramètres de transformation JSX,
// mais ce seraient des objets/appels de fonction JavaScript.
L'exécution de bun run component.tsx
exécuterait le fichier, transpilant le JSX en JavaScript.
Configuration (tsconfig.json
) :
Bun respecte les fichiers tsconfig.json
pour les options de configuration qui affectent la transpilation. Bien qu'il n'effectue pas de vérification de type complète comme tsc
(Bun se concentre sur la vitesse d'exécution et de transpilation), il lit tsconfig.json
pour comprendre les paramètres tels que :
jsx
: ("react-jsx"
,"react"
, etc.) Comment JSX doit être transformé.jsxImportSource
: Le module à partir duquel importer les fonctions d'assistance JSX (par exemple,"react"
).experimentalDecorators
,emitDecoratorMetadata
: Prise en charge des décorateurs.paths
,baseUrl
: Mappage de chemin de module pour les alias d'importation personnalisés.target
,module
: Bien que Bun gère l'exécution, ceux-ci peuvent parfois influencer des détails de transpilation mineurs.strict
,strictNullChecks
, etc. : Ceux-ci affectent principalement la vérification des types (ce que Bun ne fait pas pendantrun
), mais certains comportements d'émission JavaScript associés peuvent être influencés.
Si aucun tsconfig.json
n'est trouvé, Bun utilise des paramètres par défaut raisonnables.
Cette intégration transparente rend le démarrage de projets TypeScript avec Bun incroyablement simple et rapide, abaissant la barrière à l'entrée et accélérant les cycles de développement.
Parlons des API spécifiques à Bun
Bien que Bun mette fortement l'accent sur la compatibilité avec les API Web Standard et Node.js, il introduit également son propre ensemble d'API intégrées et optimisées sous l'objet global Bun
. Ces API fournissent souvent des alternatives hautes performances ou des wrappers pratiques pour les tâches courantes qui tirent parti des capacités de code natif de Bun.
Voici un aperçu de certaines API clés Bun.*
:
Bun.serve({...})
: Comme on le voit dans le Quickstart, c'est la pierre angulaire de la création de serveurs HTTP et WebSocket hautes performances. Il offre une configuration simplifiée et utilise la signature du gestionnairefetch
standard. (Couvert en détail plus tard).Bun.file(path)
: Crée un objetBunFile
, qui est une référence paresseuse à un fichier sur le disque. Il fournit des méthodes hautement optimisées pour la lecture du contenu des fichiers dans divers formats (.text()
,.json()
,.arrayBuffer()
,.stream()
) uniquement en cas de besoin. Ceci est souvent beaucoup plus rapide que les équivalentsnode:fs
.Bun.write(path, data)
: L'équivalent deBun.file
, utilisé pour écrire des données dans des fichiers efficacement. Il accepte divers types de données (chaînes, Blobs, Buffers, autresBunFile
s) et effectue des écritures atomiques par défaut.Bun.build({...})
: Fournit un accès programmatique au bundler intégré de Bun, qui est compatible avec l'API esbuild. Permet de regrouper JavaScript/TypeScript pour les navigateurs ou d'autres runtimes directement à partir de scripts Bun.Bun.spawn({...})
/Bun.spawnSync({...})
: Exécute des commandes externes en tant que processus enfants, similaires àchild_process
de Node.js. Offre des API de streaming asynchrones et une version synchrone plus simple, optimisée pour une faible surcharge.Bun.Transpiler({...})
: Accès programmatique direct au transpiler interne rapide de Bun pour convertir TypeScript/JSX en JavaScript sans regroupement complet.Bun.password.hash(...)
/Bun.password.verify(...)
: Fonctions sécurisées et faciles à utiliser pour le hachage et la vérification des mots de passe à l'aide d'algorithmes standard de l'industrie comme Argon2id (recommandé) et bcrypt. Évite le besoin de bibliothèques externes.Bun.env
: Un objet fournissant l'accès aux variables d'environnement, similaire àprocess.env
, mais offrant potentiellement un accès plus rapide dans certains scénarios.Bun.version
: Une chaîne contenant la version de Bun en cours d'exécution.Bun.revision
: Une chaîne contenant le hachage de validation Git de la build Bun en cours d'exécution.Bun.sleep(ms)
/Bun.sleepSync(ms)
: Fonctions pour suspendre l'exécution pendant une durée spécifiée.Bun.gc()
: Déclencher manuellement le garbage collection (utiliser avec parcimonie, principalement pour le débogage/l'analyse comparative).Bun.resolveSync(specifier, parentPath)
/Bun.resolve(specifier, parentPath)
: Effectuer par programmation la résolution de module de style Node.js pour trouver le chemin absolu d'un module.
Ces API représentent l'effort de Bun pour fournir des solutions intégrées et optimisées pour les tâches de développement courantes, réduisant la dépendance aux dépendances externes et tirant parti de la vitesse de son cœur natif.
API Web dans Bun
Un choix de conception fondamental dans Bun est son fort engagement à implémenter les API Web standard. Chaque fois qu'une API standard existe pour une tâche particulière (en particulier pour la mise en réseau et la gestion des données), Bun préfère implémenter cette norme plutôt que d'inventer une API propriétaire ou de s'appuyer uniquement sur les conventions Node.js.
Cette approche offre plusieurs avantages importants :
- Portabilité du code : Le code écrit à l'aide des API Web standard peut souvent être réutilisé dans différents environnements JavaScript – le navigateur, Node.js (qui adopte également de plus en plus les normes Web), Deno, Cloudflare Workers et Bun – avec moins de modifications.
- Familiarité : Les développeurs déjà familiarisés avec les API de navigateur peuvent tirer parti de ces connaissances lorsqu'ils travaillent avec Bun, ce qui réduit la courbe d'apprentissage.
- Pérennité : L'alignement sur les normes établies par des organismes comme WHATWG et W3C conduit généralement à des API plus stables et largement prises en charge à long terme.
- Performance : Les implémentations natives de Bun de ces API Web sont hautement optimisées pour son runtime.
Les API Web Standard clés implémentées dans Bun incluent :
Fetch API :
fetch()
: La fonction globale pour effectuer des requêtes HTTP(S).Request
: Représente une requête HTTP.Response
: Représente une réponse HTTP.Headers
: Représente les en-têtes HTTP.
URL API :
URL
: Pour l'analyse et la manipulation des URL.URLSearchParams
: Pour travailler avec les paramètres de requête URL.
Streams API :
ReadableStream
: Représente une source de données qui peut être lue de manière asynchrone. Utilisé pour les corps de requête/réponse, la lecture de fichiers, etc.WritableStream
: Représente une destination pour les données qui peuvent être écrites de manière asynchrone. Utilisé pour les corps de requête, l'écriture de fichiers, etc.TransformStream
: Un flux duplex qui transforme les données au fur et à mesure qu'elles passent (par exemple, compression, encodage).
Encoding API :
TextEncoder
: Encode les chaînes enUint8Array
(généralement UTF-8).TextDecoder
: DécodeUint8Array
en chaînes.
Blob API :
Blob
: Représente des données brutes immuables, souvent utilisées pour des objets de type fichier.File
: ÉtendBlob
pour représenter les fichiers, y compris les métadonnées comme le nom et la date de dernière modification. (Souvent créé viaBun.file().slice()
ou à partir de données de formulaire).
FormData API :
FormData
: Pour la création d'ensembles de paires clé/valeur, souvent utilisé pour soumettre des données de formulaire dans les requêtesfetch
.
WebSocket API :
WebSocket
: L'API côté client pour établir des connexions WebSocket. (La gestion côté serveur est intégrée àBun.serve
).
Minuteurs :
setTimeout
,setInterval
,clearTimeout
,clearInterval
: Fonctions standard pour la planification de l'exécution du code.
Console API :
console.log
,console.error
,console.warn
, etc. : Fonctions de journalisation standard.
Crypto API :
crypto.subtle
: Fournit l'accès aux primitives cryptographiques de bas niveau (hachage, signature, chiffrement).crypto.randomUUID()
: Génère des UUID v4.crypto.getRandomValues()
: Génère des nombres aléatoires cryptographiquement forts.
Performance API :
performance.now()
: Fournit des horodatages haute résolution pour les mesures de performance.
En fournissant des implémentations robustes et performantes de ces API Web essentielles, Bun se positionne comme un runtime moderne bien adapté à la création de serveurs Web, d'API et d'autres applications axées sur le réseau à l'aide d'interfaces familières et standardisées.
Serveur HTTP Bun, expliqué
Le principal moyen de créer des serveurs Web dans Bun est via l'API Bun.serve
. Il est conçu pour des performances exceptionnelles et une facilité d'utilisation, s'intégrant de manière transparente aux API Web standard comme Request
, Response
et fetch
.
Concepts de base :
La fonction Bun.serve
prend un objet de configuration et renvoie un objet Server
. La partie la plus critique de la configuration est la fonction fetch
.
import { type Server } from "bun";
const server: Server = Bun.serve({
port: 8080, // Le port sur lequel écouter
hostname: "0.0.0.0", // L'interface réseau à lier (0.0.0.0 pour tous)
// fetch : Le cœur du serveur - gère les requêtes entrantes
async fetch(req: Request, server: Server): Promise<Response> {
// req est un objet Request d'API Web standard
// server est une référence à l'instance Server elle-même
const url = new URL(req.url);
// Exemple de routage de base
if (url.pathname === "/") {
return new Response("Homepage");
}
if (url.pathname === "/about") {
return new Response("About Us page");
}
if (url.pathname === "/greet" && req.method === "GET") {
const name = url.searchParams.get("name") || "World";
return new Response(`Hello, ${name}!`);
}
if (url.pathname === "/data" && req.method === "POST") {
try {
const data = await req.json(); // Lire le corps de la requête en tant que JSON
console.log("Received data:", data);
return new Response(JSON.stringify({ received: data }), {
headers: { 'Content-Type': 'application/json' }
});
} catch (e) {
return new Response("Invalid JSON body", { status: 400 });
}
}
// 404 Not Found par défaut
return new Response("Page Not Found", { status: 404 });
},
// error : Gestionnaire facultatif pour les erreurs survenant *en dehors* du gestionnaire fetch
error(error: Error): Response | Promise<Response> {
console.error("[Server Error]", error);
return new Response("Something went wrong!", { status: 500 });
},
// development : Définir sur true pour des pages d'erreur de développement utiles (par défaut : !process.env.NODE_ENV=production)
development: true,
// D'autres options comme 'websocket', 'tls' existent pour les cas d'utilisation avancés
});
console.log(`Bun server listening on http://${server.hostname}:${server.port}`);
// Vous pouvez interagir avec l'objet serveur :
// server.stop() // Arrête le serveur
// server.reload({...}) // Met à jour la configuration du serveur (par exemple, le gestionnaire fetch) de manière dynamique
Fonctionnalités clés :
- Performance :
Bun.serve
est basé sur l'implémentation de serveur HTTP personnalisée et hautement optimisée de Bun, écrite en Zig. Il est capable de gérer un très grand nombre de requêtes par seconde avec une faible latence et une faible consommation de ressources par rapport à de nombreux frameworks Node.js. - Gestionnaire
fetch
: L'utilisation de la signature standard(Request) => Response | Promise<Response>
rend la logique de base familière à tous ceux qui ont travaillé avec les Service Workers, les Cloudflare Workers ou d'autres frameworks Web modernes. Il encourage l'utilisation des objetsRequest
etResponse
standard. - Objet Request : Le paramètre
req
donne accès aux propriétés et méthodesRequest
standard :req.url
,req.method
,req.headers
,req.json()
,req.text()
,req.arrayBuffer()
,req.formData()
,req.body
(unReadableStream
). - Objet Response : Vous créez et renvoyez des objets
Response
standard, ce qui vous permet de définir facilement le corps (chaîne, Buffer, Blob, Stream, etc.), le code d'état et les en-têtes. - Gestion des erreurs : La fonction
error
facultative fournit un endroit centralisé pour intercepter les erreurs qui se produisent avant ou pendant le traitement initial d'une requête par le serveur lui-même (par exemple, poignée de main TLS échouée, requête mal formée), ou les erreurs levées de manière synchrone en dehors dutry...catch
du gestionnairefetch
. Les erreurs dans le gestionnairefetch
asynchrone doivent généralement y être interceptées. - Streaming : Les corps des requêtes et des réponses peuvent être diffusés en continu à l'aide des API standard
ReadableStream
etWritableStream
, ce qui est essentiel pour gérer efficacement les téléchargements ou les téléchargements volumineux