SvelteKit offre un rendu configurable, ce qui vous permet de construire et déployer votre projet de différentes manières. Avec SvelteKit vous pouvez construire tous les types d'application listés ci-dessous, et bien plus encore. Les paramètres de rendu ne sont pas mutuellement exclusifs, et vous pouvez tout à fait choisir de manière optimale comment rendre différentes parties de votre application. Si vous n'avez vraiment réfléchi à la manière dont vous souhaitez construire votre application, ne vous inquiétez pas ! La façon dont votre application est construite, déployée et rendue est contrôlée par l'adaptateur que vous avez choisi et un peu de configuration, et tout ça peut être modifié plus tard. La [structure de projet](project-structure) et le [routing](glossary#Routing) sont exactement les mêmes quelque soit le type de projet que vous choisissez. ## Rendu par défaut [!VO]Default rendering Par défaut, lorsque quelqu'un visite un site, SvelteKit va rendre la première page avec du [rendu côté serveur (SSR)](glossary#SSR) et les pages suivantes avec du [rendu côté client (CSR)](glossary#CSR). L'utilisation du SSR pour le rendu initial améliore le référencement (SEO) et la performance perçue du chargement de page initial. Le rendu côté client prend ensuite le relais et met à jour la page sans avoir besoin de re-rendre les composants en commun, ce qui est généralement plus rapide et évite un flash lorsque de la navigation entre les pages. Les applications construites avec cette approche de rendu hybride sont aussi appelée ["applications transitionnelles"](https://www.youtube.com/watch?v=860d8usGC0o). ## Génération de site statique [!VO]Static site generation Vous pouvez utiliser SvelteKit comme un [générateur de site statique (SSG)](glossary#SSG) qui [pré-construit](glossary#Prerendering) entièrement votre site avec du rendu statique en utilisant l'[adaptateur `adapter-static`](adapter-static). Vous pouvez aussi utiliser l'[option de pré-rendu](page-options#prerender) pour pré-construire uniquement certaines pages, et choisir un autre adaptateur avec lequel vous ferez du rendu dynamique côté serveur pour les autres pages. Les outils servant uniquement à faire de la génération de site statique peuvent optimiser le processus de pré-rendu de manière plus efficace lorsque vous construisez un très grand nombre de pages. Lorsque vous travaillez sur des sites de grande taille générés de manière statique, vous pouvez réduire votre temps de compilation grâce à la méthode d'[Incremental Static Regeneration (ISR) si vous vous utilisez l'adpateur `adapter-vercel`](adapter-vercel#Incremental-Static-Regeneration). Et à la différence d'outils de SSGs dédiés, SvelteKit permet de mélanger efficacement différents types de rendu pour différentes pages. ## SPA [!VO]Single-page app Les [SPAs (applications sur une seule page)](glossary#SPA) utilisent exclusivement du [rendu côté client (CSR)](glossary#CSR). Vous pouvez [construire des SPAs](single-page-apps) avec SvelteKit. Comme pour tous les types d'application SvelteKit, vous pouvez écrire votre backend en SvelteKit ou avec un [autre langage ou framework](#Separate-backend). Si vous construisez une application sans aucun backend ou avec un [backend séparé](#Separate-backend), vous pouvez simplement ignorer les parties de cette documentation traitant des fichiers `server`. ## MPA [!VO]Multi-page app SvelteKit n'est généralement pas utilisé pour construire des [applications multi-pages au sens traditionnel](glossary#MPA). Toutefois, SvelteKit vous permet de supprimer tout le code JavaScript d'une page avec [`csr = false`](page-options#csr), ce qui déclenchera le rendu des pages suivantes sur le serveur, ou bien vous pouvez utiliser [`data-sveltekit-reload`](link-options#data-sveltekit-reload) pour faire le rendu de liens spécifiques sur le serveur. ## Backend séparé [!VO]Separate backend Si votre backend est écrit dans un autre langage comme Go, Java, PHP, Ruby, Rust, ou C#, il y a plusieurs manières de déployer votre application. La méthode recommandée serait de déployer votre frontend SvelteKit séparément de votre backend en utilisant l'adaptateur `adapter-node` ou un adaptateur serverless. Certaines personnes préfèrent ne pas avoir à gérer un deuxième processus et décident de déployer leur application en tant que [SPA](single-page-apps) servie par leur serveur de backend, mais notez tout de même que les SPAs ont un référencement et des performances dégradées. Si vous utilisez un backend externe, vous pouvez simplement ignorer les parties de cette documentation traitant des fichiers `server`. Vous pouvez également vous référer à la [FÀQ concernant les appels à un backend externe](faq#How-do-I-use-a-different-backend-API-server). ## Application serverless [!VO]Serverless app Les applications SvelteKit sont simples à lancer sur des plateformes serverless. L'[adaptateur zéro config par défaut](adapter-auto) va automatiquement exécuter votre application sur un certain nombre de plateformes supportées, mais vous pouvez également utiliser les adaptateurs [`adapter-vercel`](adapter-vercel), [`adapter-netlify`](adapter-netlify), ou [`adapter-cloudflare`](adapter-cloudflare) pour avoir accès à des configurations spécifiques par plateforme. Des [adaptateurs gérés par la communauté](https://sveltesociety.dev/packages?category=sveltekit-adapters) vous permettent de déployer votre application sur quasiment tous les environnements serverless existants. Certains de ces adaptateurs comme [`adapter-vercel`](adapter-vercel) et [`adapter-netlify`](adapter-netlify) offrent une option `edge`, afin de fournir du [rendu sur edge](glossary#Edge) pour améliorer la latence. ## Votre propre serveur [!VO]Your own server Vous pouvez déployer sur votre propre serveur ou VPS en utilisant [`adapter-node`](adapter-node). ## Conteneur [!VO]Container Vous pouvez utiliser [`adapter-node`](adapter-node) pour exécuter votre application SvelteKit au sein d'un conteneur comme Docker ou LXC. ## Librairie [!VO]Library Vous pouvez créer une librairie que d'autres applications Svelte peuvent consommer en utilisant l'add-on SvelteKit [`@sveltejs/package`](packaging). Il vous suffit de choisir l'option librairie lorsque vous exécutez [`sv create`](/docs/cli/sv-create). ## Application hors-ligne [!VO]Offline app SvelteKit offre un support complet pour les [service workers](service-workers) vous permettant de construire tout types d'applications comme des applications hors-ligne et des [PWA (Progressive Web Apps)](glossary#PWA). ## Application mobile [!VO]Mobile app Vous pouvez transformer votre [SPA SvelteKit](single-page-apps) en application mobile grâce à [Tauri](https://v2.tauri.app/start/frontend/sveltekit/) ou [Capacitor](https://capacitorjs.com/solution/svelte). Les fonctionnalités mobile comme la caméra, la géolocalisation et les notifications push sont disponibles via des plugins pour les deux plateformes. Ces plateformes de développement mobile fonctionnent en lançant un serveur web local, puis en servant votre application comme un hôte statique sur votre téléphone. L'option [`bundleStrategy: 'single'`](configuration#output) peut vous être utile pour limiter le nombre de requêtes effectuées. Par ex. au moment où ces lignes sont écrites, le serveur local de Capacitor utilise HTTP/1, qui limite le nombre de connexions simultanées. ## Application desktop [!VO]Desktop app Vous pouvez transformer une [SPA SvelteKit](single-page-apps) en application desktop grâce à [Tauri](https://v2.tauri.app/start/frontend/sveltekit/), [wails](https://wails.io/docs/guides/sveltekit/), ou [electron](https://www.electronjs.org/). ## Extension de navigateur [!VO]Browser extension Vous pouvez construire des extensions navigateur en utilisant soit [`adapter-static`](adapter-static) ou des [adaptateurs de la communauté](https://sveltesociety.dev/packages?category=sveltekit-adapters) spécialement conçus pour les extensions navigateur. ## Appareil embarqué [!VO]Embedded device Grâce à son rendu performant, Svelte peut être exécuté sur les appareils de faible puissance. Les appareils embarqués comme les micro-contrôlleurs et les télévisions peuvent limiter le nombre de connexions simultanées. Pour réduire le nombre de connexions simultanées, l'option [`bundleStrategy: 'single'`](configuration#output) peut vous être utile dans cette configuration de déploiement.