Un framework est un environnement logiciel structurant qui fournit les fondations, les conventions et les composants nécessaires au développement d’une application.
Il impose un modèle architectural (comme MVC – Modèle-Vue-Contrôleur), une organisation du code, des mécanismes de gestion (routes, bases de données, authentification, etc.) et une bibliothèque de fonctions pré-écrites, toutes conçues pour fonctionner ensemble de manière cohérente.
Contrairement à une simple librairie que l’on appelle à la demande pour accomplir une tâche spécifique , un framework « inverse le contrôle » (Inversion of Control) : c’est lui qui appelle votre code, selon ses règles et sa structure. Le développeur écrit du code à l’intérieur du cadre imposé par le framework.
Caractéristiques clés :
- Fournit une architecture prédéfinie (ex. : MVC, microservices, etc.)
- Encapsule la logique technique répétitive (gestion des requêtes HTTP, ORM, sessions…)
- Impos des conventions (nommage, organisation des fichiers, flux d’exécution)
- Est spécifique à un langage ou un écosystème (ex. : Python, JavaScript, PHP…)
- Accélère le développement tout en garantissant cohérence, maintenabilité et bonnes pratiques
Exemples notables :
- Backend : Django, Flask (Python) ; Laravel, Symfony (PHP) ; Spring (Java) ; NestJS (Node.js)
- Frontend : Vue.js, React (souvent étendu via des meta-frameworks comme Next.js, Nuxt.js)
Analogie :
- Une librairie, c’est comme un outil (un marteau) que vous utilisez quand vous voulez.
- Un framework, c’est comme une maison préfabriquée : vous pouvez personnaliser les pièces, mais vous devez respecter la structure globale.
En anglais : software framework