En 2023, j'ai pris une décision que certains de mes collègues ont jugée étrange : j'ai écrit mon propre micro-framework JavaScript. Pas par égo, pas par envie de réinventer la roue, mais parce que j'étais confronté à un problème concret que les solutions existantes ne résolvaient pas bien.
Ce problème, c'était la modernisation de projets PHP legacy sans refonte complète.
Le constat
J'interviens régulièrement sur des projets PHP qui ont 10, 15, parfois 20 ans. Des codebases monumentales, souvent en procédural ou en MVC maison, avec des templates mélangeant PHP et HTML. Moderniser ces projets avec React ou Angular, c'est un chantier titanesque : nouveau build system, nouveau routing, nouvelle architecture, formation des équipes...
Mais en parallèle, les besoins métiers évoluent : on veut des composants interactifs, des mises à jour en temps réel, des interfaces réactives. La question était : comment apporter ces fonctionnalités modernes sans tout casser ?
La réponse : un micro-framework JS de moins de 5 Ko, intégrable via une simple balise <script>.
Ce que fait Mini-Js
Mini-Js n'essaie pas de concurrencer React ou Angular. Il résout un problème spécifique :
- Composants réactifs — des blocs d'interface qui se mettent à jour automatiquement quand leurs données changent
- Binding bidirectionnel — comme Angular, mais sans compilation, sans CLI, sans dépendances
- Events système — un bus d'événements pour découpler les composants
- Zéro build step — on écrit du HTML avec des attributs spéciaux, et ça marche
Concrètement, voici à quoi ça ressemble :
<div m-app>
<div m-state="{ count: 0 }">
<button @click="count--">-</button>
<span>{{ count }}</span>
<button @click="count++">+</button>
</div>
</div>
Pas de JSX, pas de virtual DOM, pas de webpack. Une balise script et c'est parti.
La philosophie
Mini-Js repose sur une idée simple : le framework doit s'adapter au projet, pas l'inverse. Dans un monde où la tendance est à l'accumulation de couches d'abstraction, Mini-Js fait le pari inverse : rester proche du DOM, utiliser les standards du web, et ne rien cacher.
Le code source est volontairement court (moins de 1000 lignes) et lisible. Pas de magie noire, pas d'abstraction opaque. Chaque fonctionnalité est documentée et testée.
Les retours que j'ai eus depuis sa mise en ligne sont intéressants : des développeurs PHP l'utilisent pour ajouter de l'interactivité à leurs projets legacy, des intégrateurs l'apprécient pour sa simplicité, et même quelques agences web l'ont adopté pour des projets internes.
Ce que j'en ai appris
Écrire un framework, même modeste, est une expérience formatrice. J'ai dû réfléchir à :
- Comment gérer le cycle de vie des composants sans garbage collector JS
- Comment implémenter un système de réactivité performant sans Proxy (pour IE11)
- Comment exposer une API intuitive qui n'effraie pas les développeurs PHP
- Comment documenter un projet open source de manière utile
C'est aussi une excellente pièce à ajouter à son portfolio. Un candidat qui a écrit et maintenu son propre framework — même modeste — montre une compréhension profonde des mécanismes sous-jacents.
Conclusion
Mini-Js n'est pas un framework pour tout le monde. Si vous démarrez un projet greenfield, utilisez React, Vue ou Angular. Mais si vous maintenez un projet PHP legacy qui a besoin d'un coup de jeune, Mini-Js pourrait bien être l'outil qu'il vous faut.
Et si vous êtes curieux, le code est open source : minijs.jnk.ovh