Blog

Svelte, Astro et la nouvelle génération de frameworks Web

framework web
development

Analyse technique, factuelle et sans préférence des nouveaux frameworks web

nice abstract image

Analyse technique avec exemples simples (Azure & GitHub)

Le paysage du développement front-end évolue rapidement. Après une décennie dominée par React, Vue et Angular, une nouvelle génération d’outils émerge, avec pour objectif de produire des applications plus légères, plus rapides et plus simples à maintenir.

Parmi ces technologies, Svelte et Astro se distinguent par leurs approches respectives :

  • Svelte mise sur la compilation
  • Astro privilégie une approche HTML-first avec hydratation partielle

Cet article propose une analyse technique, factuelle et sans préférence, tout en montrant comment ces outils s’intègrent dans des environnements modernes basés sur GitHub et Microsoft Azure.

1. Pourquoi de nouveaux frameworks ?

Les frameworks front-end historiques ont apporté structure et productivité, mais au prix de certaines contraintes :

  • Bundles JavaScript volumineux
  • Exécution côté client coûteuse
  • Complexité accrue des chaînes de build
  • Performances parfois dégradées sur mobile

En parallèle, les pratiques Cloud et DevOps se sont généralisées : CI/CD avec GitHub Actions, hébergement statique, serverless, CDN et architectures server-first.

Ces évolutions ont favorisé l’émergence de frameworks plus légers et plus ciblés.

2. Svelte : compiler plutôt qu’exécuter

2.1 Philosophie

Svelte se distingue par une approche radicale : il compile les composants au moment du build au lieu d’exécuter un framework dans le navigateur.

Conséquences techniques :

  • Pas de virtual DOM
  • Pas de runtime lourd côté client
  • JavaScript optimisé et spécifique à l’application

2.2 Exemple simple : composant réactif

<script>
  let count = 0;
</script>

<button on:click={() => count++}>
  Compteur : {count}
</button>

Ce code illustre la réactivité native de Svelte : une simple affectation déclenche automatiquement la mise à jour de l’interface.

2.3 Notions de base supplémentaires

Affichage conditionnel

<script>
  let isLogged = false;
</script>

{#if isLogged}
  <p>Bienvenue !</p>
{:else}
  <p>Veuillez vous connecter.</p>
{/if}

Boucle simple

<script>
  let items = ["A", "B", "C"];
</script>

<ul>
  {#each items as item}
    <li>{item}</li>
  {/each}
</ul>

2.4 Intégration avec GitHub & Azure

Dans un environnement Microsoft :

  • Code hébergé sur GitHub

  • Build automatisé via GitHub Actions

  • Déploiement sur :

    • Azure Static Web Apps (SSG ou SvelteKit)
    • Azure App Service ou Container Apps pour le SSR
  • APIs exposées via Azure Functions

Svelte s’intègre naturellement dans des pipelines CI/CD standards.

3. Astro : HTML d’abord, JavaScript ensuite

3.1 Philosophie

Astro adopte une approche content-first :

  • Génération de HTML statique par défaut
  • Aucun JavaScript envoyé au navigateur sans action explicite

L’interactivité repose sur le principe d’hydratation partielle, aussi appelé islands architecture.

3.2 Exemple : page Astro minimale

const title = "Page Astro simple";

<h1>{title}</h1>
<p>Cette page est générée en HTML pur.</p>

Dans ce cas, Astro ne produit que du HTML : aucun JavaScript n’est chargé côté client.

3.3 Exemple : données côté serveur

const items = ["Item A", "Item B", "Item C"];

<ul>
  {items.map(item => <li>{item}</li>)}
</ul>

Les données sont traitées au build ou côté serveur.

3.4 Exemple : composant interactif (Island)

index.astro

import Counter from "../components/Counter.svelte";

<h1>Astro + Svelte</h1>
<Counter client:load />

Counter.svelte

<script>
  let count = 0;
</script>

<button on:click={() => count++}>
  Compteur : {count}
</button>

Seul ce composant est hydraté : le reste de la page reste en HTML statique.

4. GitHub Actions : pipeline basique

name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm install
      - run: npm run build

Ce pipeline est identique pour Svelte ou Astro et s’intègre directement avec Azure Static Web Apps.

5. Azure Functions : API minimale

module.exports = async function (context, req) {
  context.res = {
    body: { message: "Hello from Azure" }
  };
};

Cette fonction peut être consommée depuis :

  • une application Svelte
  • une page Astro
  • un site statique hébergé sur Azure

6. Comparaison factuelle

CritèreSvelteAstro
ApprocheCompilationSSR / SSG
JavaScript clientMinimalZéro par défaut
InteractivitéNativeVia islands
Cas d’usageApplications interactivesSites orientés contenu
Azure Static Web AppsOuiOui

7. Conclusion

Svelte et Astro illustrent l’évolution actuelle du développement front-end :

  • Svelte compile le code pour réduire le coût à l’exécution côté client
  • Astro hydrate uniquement ce qui est nécessaire, limitant fortement le JavaScript chargé dans le navigateur

Ces deux technologies s’intègrent naturellement dans des workflows modernes reposant sur GitHub, Azure, le serverless et le CI/CD.

Elles ne remplacent pas les frameworks historiques, mais proposent des alternatives techniques adaptées aux enjeux actuels de performance, de simplicité et d’optimisation des coûts Cloud.