Compile-time
Pas de Proxy, pas de Virtual DOM. Le compilateur génère des mises à jour DOM chirurgicales — il sait quel nœud dépend de quelle valeur.
La réactivité est résolue à la compilation. Les composants sont des Web Components natifs avec leur propre Shadow DOM. Réactivité profonde par défaut, et SSR inclus.
Pas de Proxy, pas de Virtual DOM. Le compilateur génère des mises à jour DOM chirurgicales — il sait quel nœud dépend de quelle valeur.
0,99× Svelte 5 sur le benchmark officiel, ~24 Ko brotli (~27 Ko gzip), et ~15 ms pour 1M de mutations profondes. Aucun surcoût de Proxy au runtime.
Chaque composant est un Custom Element avec son Shadow DOM. Pas de runtime propriétaire — juste la plateforme.
Ce compteur est un composant MJS bien vivant. La réactivité est compilée — un clic met à jour le nombre, et rien d'autre.
<script> $count = 0 inc = -> $count++ </script> <button @click={inc}> Clics : {$count} </button>
Objets et tableaux imbriqués suivis automatiquement.
Render-then-replace, Declarative Shadow DOM.
Transitions intégrées et animations FLIP.
Un routeur côté client, livré avec.
État global via stores $$ et contexte §.
<@module> monte un composant par son nom.
Fragments de markup réutilisables et slots nommés.
<@failed> capture les erreurs et affiche un repli.
| Critère | MJS | Svelte | React | Solid |
|---|---|---|---|---|
| Approche | compile-time | compile-time | VDOM | compile-time |
| Runtime | ~24 Ko | ~10 Ko | ~45 Ko | ~7 Ko |
| Réactivité profonde sans Proxy | ✓ | partiel | non | manuel |
| Web Components natifs | ✓ | non | non | non |
| SSR | ✓ | ✓ | ✓ | ✓ |
Chiffres indicatifs, donnés pour être honnêtes, pas promotionnels.
Une commande pour récupérer le framework.
npm install mjs-framework