Si tu débutes dans le web, tu as surement dû commencer à entendre parler de framework. Angular, React, Symfony Laravel, il en existent énormément et à peu près pour n’importe quel besoin. Mais qu’est ce qu’un framework ? Pourquoi en utiliser un ? Quels sont les avantages et les inconvénients d’un framework ?
Je t’explique tout dans cet artcile.
Qu’est ce qu’un framework ?
Un framework se définit comme un « cadre de travail », mais j’utiliserais plutôt le terme de « boite à outils ». Un framework est un ensemble de fonctionnalités et de composants déjà codés et testés qui permettent d’être réutiliser lors d’un développement. C’est une structure de base, le squelette de l’application.
Toutes les fonctionnalités essentielles et récurrentes dans les applications sont déjà présentes dans un framework. Ce qui permet donc de ne pas recommencer chaque projet en partant de 0. Les outils sont déjà présents dans le framework, il n’y a plus qu’à se servir et les réutiliser.
Il permet donc de faire gagner beaucoup de temps aux développeurs et d’augmenter la productivité en se concentrant uniquement sur l’essentiel. Apporter de la valeur à leur application sans avoir besoin de réinventer la roue.
En général, chaque framework est associé à un langage et il existe des frameworks pour à peu près tout : le web, le CSS, les applications mobile, desktop, …
De plus, il existe des frameworks open source (gratuit) mais aussi payant. L’avantage d’utiliser un framework payant est qu’il permet d’avoir un support (une aide) en cas de besoin. Les frameworks open source, eux, bénéficient généralement d’une grosse communauté en ligne, qui peut aussi apporter son aide en cas de besoin. Les frameworks open source peuvent être amélioré par n’importe quel développeur voulant apporter sa pierre à l’édifice.
Si tu souhaites faire quelque chose de plus léger ou que tu trouves qu’il manque certaines fonctionnalités dans les frameworks que tu as pu tester, tu peux toi aussi de créer ton propre framework
Framework VS librairie
Quelle est la différence entre un framework et une librairie ?
Je vois beaucoup de personnes qui se pose cette question et il est vrai que lorsque l’on débute, il peut être compliqué de faire la distinction entre ces deux termes.
Une librairie représente un ensemble de classe et de fonctions. En général dans le but de répondre à un besoin en particulier. On peut retrouver des librairies pour des calculs de mathématiques, des librairies pour la gestion des PDF en PHP, etc. Leur but est donc de mettre à disposition un ensemble de fonction qui puissent être appeler pour répondre à un besoin.
Un framework, comme je le disais précédemment fourni un cadre de travail et un ensemble d’outils aux développeurs. Il est plus poussé qu’une librairie. De plus, il va plutôt fournir un style d’architecture spécifique à respecter (ex : MVC) que répondre à un besoin précis.
Certains frameworks peuvent être composés de plusieurs librairies.
Pour les librairies, le besoin vient de votre code, auquel vous venez ajouter une ou des libraires. Dans le cas de framework, vous partez de la structure du framework pour venir y superposer votre code dessus.

Les avantages d’un framework
C’est bien beau toutes ces explications mais tu doit te demander, qu’est ce qu’un framework peut t’apporter.
La réutilisation du code
Tout d’abord, ils permettent la réutilisation d’un code qui a déjà était codé et testé en amont. De nombreux composants sont déjà présent et il n’y a plus qu’à les utiliser. Tous ces composants répondent à des problématiques récurrentes dans le développement. Par exemple la connexion des utilisateurs, la gestion des comptes clients, les formulaires, la gestion des bases de données… Les frameworks permettent de ne pas réinventer la roue à chaque fois que l’on se lance sur un projet.
La standardisation du code
Comme nous l’avons vu précédemment les frameworks fournissent un cadre de travail. Ce cadre de travail permet de standardiser notre code, de le découper en respectant certains standards et patterns, de manière à pouvoir réutiliser ce que l’on code par la suite.
Le framework permets ainsi de respecter les bonnes pratiques et de réaliser du code « propre », c’est-à-dire, sans duplication de code, en découpant les différents composants de notre application dans différentes classes, etc.
Cette standardisation oblige donc le développeur à une certaine discipline et rigueur dans son code.
Certains frameworks utilisent par exemple le pattern MVC qui permet de découper le code en trois parties distinctes : les Modèles, les Vues et les Contrôleurs.
Gain de productivité
C’est un des avantages les plus important d’un framework.
Un framework fait gagner ENORMEMENT de temps lors du développement. Grâce à ses composants déjà coder, il n’y a plus qu’à les réutiliser. Ce qui permets de réduire la quantité de travail pour se concentrer sur la réalisation des tâches essentielles au projet sans perdre de temps sur les tâches récurrentes (créer un connecteur de base de données, création d’un routeur). Le travail devient alors vraiment optimisé.

J’utilise le Framework Symfony depuis quelques années maintenant et je trouve ce framework est vraiment puissant. Symfony intègre un système de commande (en ligne de commande) qui permet de créer énormément de choses en écrivant une simple commande. Il est par exemple possible de créer un objet, de modifier la structure de la base de données, de vider les caches, de créer une interface de connexion, créer des contrôleurs, …
Tout ça, sans écrire une seule ligne de code, et en utilisant uniquement l’invité de commande. Il est ainsi possible d’accomplir une grosse partie du travail avant même de commencer à coder.
De plus le framework Symfony possèdent énormément de composants très poussés qui permettent de réaliser des fonctionnalités plus pointues assez facilement.
La puissance
La majorité des frameworks sont aujourd’hui très puissant. Comme je le disait pour Symfony, ils embarquent toujours plus de composants et de fonctionnalités qui permettent de faire de plus en plus de choses et de plus en plus poussés.
Grâce aux Frameworks il est possible d’interagir facilement avec les différents évènements de l’application. Par exemple, d’appeler une fonction lorsqu’une entré est créée en base de données ou encore quand l’utilisateur fait une certaine action (vient de se connecter ou de de valider un formulaire). Il est aussi possible de construire des formulaires imbriqués avec des sous-formulaires ou encore d’intégrer différentes bases de données avec différents moteurs de gestion de bases de données (MySQL, Postgre, …) dans une même application.
Des communautés importantes
Les frameworks les plus connues possèdent d’énorme communauté sur internet et donc dans le monde entier. Ces communautés sont l’équivalent du support technique pour les frameworks payants. Elles vont permettent de t’aider lorsque tu seras bloqué, que tu auras un bug. Tu pourras facilement trouer une solution sur le web.
Ainsi lorsque tu choisiras sur quel Framework tu souhaite te lancer, renseigne-toi sur la communauté qui supporte ce Framework. Plus elle est importante, plus tu pourras trouver de l’aide facilement en cas de besoin.
Gestion de la sécurité
Les frameworks embarquent aussi une partie sécurité. La plupart des failles connues sont déjà corrigés dans l’ensemble des composants du framework.
Une des failles connues et très basique est l’injection SQL. Cette faille consiste à modifier une requête SQL en y injectant un bout de requête supplémentaire pour modifier le résultat obtenu, en général par l’intermédiaire des formulaires.
Si tu n’utilises pas de framework, tu devras penser à sécuriser ton application de ce genre de failles et de toutes les autres failles de sécurité. Si tu débutes dans le monde du web, il est probable que tu ne les connaisses pas toutes, ce qui peut être un risque pour ton application.
Ainsi, les frameworks garantissent ainsi une certaine sécurité et tu n’auras pas besoin de tes soucier de la majeure partie des failles de sécurité existantes lorsque tu coderas.
Attention tout de même, certaines failles de sécurité viendront te la façon dont tu code ton application. De ton coté il faut aussi que tu code de manière à ne pas intégrer de nouvelles failles de sécurité dans ton application.
Un plus pour renter sur le marché du travail
Aujourd’hui grâce à la puissance des frameworks, beaucoup d’entreprises en utilisent pour gagner en productivité, en qualité et en sécurité. Ainsi, si tu maitrises un framework populaire, ce sera un gros plus pour toi pour trouver un emploi.
Les inconvénients d’un framework
Malgré tous ces avantages non négligeables, les frameworks ont aussi leurs inconvénients
Pas évident pour les débutants
Pour se plonger dans un framework, il faut avoir un peu d’expérience dans le langage du framework, et bien connaitre les bases, voir même les notions avancées (programmation orienté objet, ORM, …).
Lorsque l’on est débutant, commencer par apprendre avec un framework peu vite devenir compliqué et il est facile de se perdre dans son apprentissage. Beaucoup de notions sont assez complexes et si les bases ne sont pas maitrisées il peut être assez dur de comprendre toutes les notions.
J’en ai fait l’expérience. Lorsque que j’était au début de ma troisième année d’étude, j’ai commencé à faire de l’alternance dans une entreprise. Lorsque je suis arrivé, je me suis retrouvé seul développeur. L’autre développeur qui devait être avec moi, n’avait pas validé sa période d’essai et n’était pas resté. Il avait entre-temps, commencé certains développements avec le framework Backbone.js, un framework javascript.
A l’époque j’avais à peine quelques notions de javascript que j’avais apprises par-ci par-là mais je n’avais presque aucune expérience avec. Lorsque que je me suis retrouvé à reprendre du code réalisé avec le framework backbone.js, j’étais pommé. Malgré mes quelques connaissances en javascript, j’avais l’impression d’avoir un truc écris en chinois devant moi. J’ai remonté mes manches et pris mon mal en patiente et j’ai commencé à mettre la tête dedans et fini par comprendre les rudiments de ce framework. J’ai passé ENORMEMENT de temps à reprendre certaines bases, à galérer à comprendre les principes du framework. Bref, une expérience un peu compliquée.
Donc pour te lancer dans un framework, commences par apprendre les bases du langage utilisé par celui-ci et gagne en expérience.
De plus tu verras que tous les frameworks n’ont pas la même courbe d’apprentissage. C’est-à-dire que certains sont plus facile à apprendre que d’autre. Quelques années après ma mauvaise expérience de Backbone.js, j’ai décidé d’apprendre Vue.js, un autre framework Javascript, que j’ai trouvé particulièrement simple à appréhender.
Une structure lourde et pas toujours flexible
Lorsque tu vas commencer à utiliser un framework, tu vas forcément commencer ton projet en demandant au framework de te créer la structure. Tu vas ainsi te retrouver avec tout un tas de fichiers avant même de sortir une ligne code.
Certains frameworks sont assez lourd et initialisent énormément de fichiers avant même qu’une ligne de code ne soit faite. Ton application va donc en pâtir et sera automatiquement moins rapide.
De plus, les frameworks fournissent un certain cadre et il est difficile d’en sortir. Ainsi ils, deviennent assez rigide sur les façons de coder. Il faut alors bien connaitre les différents patterns de bases (MVC, singleton, …). Les patterns sont des modèles de conception, des ensembles de bonnes pratiques issu de problèmes courants des développeurs. Si tu ne les respectent pas, ton code vas vite partir dans tous les sens et il sera très compliqué de s’y retrouver.
La dépendance au framework
Lorsque que tu utilises un framework, tu deviens dépendant de ce dernier. Il est très difficile, voire impossible, de s’en détacher une fois que ton projet est lancé. Le framework constituant, la structure de ton code, les fondations, il est extrêmement compliqué de le retirer de ton code.
De plus, les frameworks sont souvent mis à jour et tu es dépendant de ces mises à jour. Si certaines mises à jour posent problèmes dans ton code, c’est à toi de les corriger. Si malgré tout, tu décides de ne pas les corriger tu vas rester bloquer à des versions de plus en plus anciennes du framework et tu ne pourras pas bénéficier de toutes les nouveautés et nouvelles fonctionnalités ainsi que des mises à jour de sécurité.
Malgré ces quelques inconvénients, les frameworks sont des outils très puissant que je recommande d’utiliser. Il faut néanmoins connaitre ces inconvénients avant de se lancer dans un développement.
Comment choisir son framework ?
Tu commences à bien connaitre les bases et les différents concepts d’un langage et tu te sens prêt à te lancer dans une nouvelle application en utilisant toute la puissance d’un framework. Malheureusement tu ne sais pas lequel choisir. Je vais essayer de répondre à cette question.
Tout d’abord, il existe des frameworsk pour beaucoup de besoins différents. Tu vas retrouver des frameworks pour les applications de bureau, pour les applications mobiles, pour du front, pour du back, pour du CSS, …
La première question est de se demander ce que tu souhaite faire et créer. En répondant à cette question tu vas déjà limiter tes choix. Si par exemple tu souhaites partir sur la création d’un site web avec une grosse partie backend, tu peux utiliser le framework Symfony.
En revanche si ton veux créer une application mobile, tu peux t’orienter vers du React native ou encore Ionic.
Le choix va principalement dépendre de ton besoin.
La deuxième question à te poser et de te demander si ce framework pourra te servir pour faire autre chose par la suite. Comme je le disait précédemment, il faut du temps pour maitriser un framework et tous ces rudiments. Ainsi, tu ne vas pas t’embêter à apprendre à utiliser un framework uniquement pour un seul projet (à moins que ça soit ton kiff d’apprendre plein de frameworks différents, pour les tester).
Tu dois donc en apprendre un qui te servira par la suite. Essayes de t’orienter vers des frameworks qui sont très utilisés. Tu auras ainsi une grosse communauté derrière qui pourra t’aider en cas de besoin.
Pour ma part j’utilise Symfony. C’est un framework que je considère très puissant. Il est possible de faire énormément des choses avec et possède une grosse communauté. Il y a quelques temps Symfony avait une structure assez lourde mais avec l’arrivée de Symfony 4, ils ont amélioré ce point.
Pour la partie front, j’utilise de plus en plus le framework VueJs, que je trouve très facile à apprendre. Pour toute la partie CSS, j’ai tendance à utiliser Bootstrap, que je trouve très pratique lorsque qu’on est une bille en design comme moi.
Quelques frameworks
Voici quelques exemples de frameworks très populaires :
- Symfony (PHP)
- Laravel (PHP)
- CakePhp (PHP)
- React (Javascript)
- Angular JS (Javascript)
- NodeJS (Javascript)
- VueJS (JavaScript)
- ASP.NET (.NET, C#, Visual Basic)
- Django (Python)
- Spring (Java)
- Ruby on rails (ruby)
- Bootstrap (CSS)
Tu sais maintenant qu’est ce qu’un framework et pourquoi en utiliser un. Écris moi dans les commentaires quel va être le prochain framework que tu souhaite apprendre