Framework, Front-end

Avec l’engouement lié à React, Symfony, Vue JS etc… on entend souvent parler de framework ou même de bibliothèque. Que ce soit en front ou même en back, vous pouvez trouver ces termes pour presque tous les langages.
Alors que désignent réellement ces dénominations ? Quelle est la différence entre un framework et une bibliothèque ? On vous propose une définition à la portée de tous de ces termes parfois mal compris 😉

Library ou bibliothèque en français : une boîte à outils pour vous aider à développer

Lorsque l’on utilise le terme anglais library, du moins pour parler d’un outil de développement, c’est pour désigner une bibliothèque de classes ou de fonctions à utiliser dans votre code. On parle alors d’un inventaire d’outils visant à vous faire gagner du temps dans votre travail d’intégration et/ou de développement.
Il ne s’agit surtout pas d’un endroit physique ! Veillez donc bien à ne pas confondre library avec le mot français “librairie” qui désigne autre chose.
Vous l’aurez compris, si l’on utilise une bibliothèque c’est pour ne pas réinventer la roue ! Si une ressource répond à vos besoins, qu’elle est fonctionnelle et disponible pourquoi ne pas l’utiliser ? Il y a bien une raison à cette question, seulement on y répondra plus tard dans la partie : “faut-il absolument utiliser une bibliothèque ou un framework”.
Revenons en à la définition d’une bibliothèque et prenons un exemple concret pour illustrer cette idée.
Sur un chantier vous pouvez très bien créer vous-même votre propre marteau ! Il vous faudra simplement dans votre tâche de développement, commencer votre projet par allouer du temps au développement de votre outil … Bien qu’on accorde beaucoup de mérite au fait-maison, il ne faut pas oublier que cette tâche peut vous demander beaucoup de temps. Et la charge que vous dépensez sur le développement de vos propres outils ne va peut-être pas plaire à votre client, qui soit dit en passant, vous paie en fonction du temps que vous passez sur un projet.
Pourquoi ne pas directement utiliser une boîte à outils ? Avec une boîte à outils, vous avez simplement besoin de prendre votre marteau et ensuite de vous concentrer sur votre travail ! Vous êtes donc plus efficace et vous y gagnez du temps !
C’est une comparaison très simpliste, seulement elle représente parfaitement l’utilité d’une bibliothèque !

Framework : une infrastructure logicielle clés en main pour coder plus vite

Un framework ce n’est pas une bibliothèque ! Cependant si l’amalgame est assez facile à faire entre ces deux termes, c’est tout simplement parce que dans la plupart des cas, un framework inclut une ou des bibliothèques. Prenons par exemple le cas de React, qui fait appel à des bibliothèques tierces pour des fonctionnalités particulières comme le routage, etc …

L’infrastructure logicielle et ses composants

On s’explique : lorsqu’on parle d’un framework, on désigne en réalité une infrastructure logicielle également appelée cadre d’application. Cette infrastructure ce n’est ni plus, ni moins qu’un schéma de fonctionnement. Cela peut-être par exemple le cas d’un modèle connu et communément adopté comme le MVC (Modèle-Vue-Contrôleur) ou encore le MVVM (Modèle-Vue-Vue-Modèle), mais également une toute autre façon de fonctionner plus exotique.
L’infrastructure logicielle fait partie intégrante du coeur d’un framework, c’est en quelques sortes ce qui le caractérise ! Savoir si un framework utilise le data-binding ou une autre façon de manipuler le code, c’est comprendre son infrastructure logicielle.
Pour être un peu plus précise, cette infrastructure est elle-même composée de plusieurs éléments autonomes appelés composants logiciels ou components en Anglais.

Le formalisme et les directives imposés par un framework

Si une bibliothèque peut être comparée à une boîte à outils, un framework quant à lui peut être perçu comme un laboratoire !
Dans un laboratoire, on peut trouver : de la matière première, des outils et surtout des consignes de sécurité à respecter !
Dans le cadre d’un framework, la matière première est représentée par des variables et d’autres paramètres qui vont donner un sens à l’utilisation des outils.
Les outils, eux sont représentés par des fonctions et des classes incorporées dans le framework. . En ce qui concerne les consignes de sécurité, elles sont représentées par le formalisme imposé par le framework. Oui, parce que même si les frameworks peuvent avoir beaucoup d’avantages, le premier étant un gain de temps, ils dictent néanmoins une façon de faire stricte et parfois même très rigide ! On parle alors de paradigme !

Comprendre l’envergure d’un framework et ses spécificités

Des frameworks, il en existe de tous les acabits ! Chacun a un but différent : certains vont être spécialisés pour une chose en particulier, d’autres pour une autre. Alors pourquoi ne pas en avoir un all-in-one ? Parce que la taille démesurée d’un framework peut avoir des conséquences sur son poids ! Vous avez compris qu’un framework c’est avant tout un document de travail à importer, et les plus complets peuvent parfois peser très lourd, comme Angular qui pèse environ 150 ko ! Dans le cadre d’un développement en front, plus un framework sera lourd, plus il prendra de temps à charger et donc le chargement de la page en compentira : c’est l’idée qu’il faut en retenir !
C’est pourquoi vous trouverez certains frameworks qui essaient de se démarquer en embarquant le strict nécessaire pour assurer un nombre de besoins ciblés. C’est le cas par exemple du framework javascript Mithril, qui lui ne pèse que 8ko de code, et dont la spécialité est la création de SPA (Single Page Application). D’ailleurs si vous cherchez un framework javascript et que vous ne savez pas lequel choisir, on vous conseille de lire notre article à ce sujet 😉

La complexité et la courbe d’apprentissage

Autre point à soulever : la complexité ! Plus un framework aura de fonctionnalités et vous offrira de possibilités, plus il sera dur à manipuler !
Êtes-vous sûr d’utiliser 100% des services d’un framework ? Ce n’est pas forcément le cas, et donc pour cibler exactement les outils qui vous seront utiles, vous allez devoir secouer chaque branche, une à une, avant de voir un petit peu plus clair dans cette jungle ! Rassurez-vous, on est pas en train de dire qu’un framework c’est une adaptation du Jumanji. Cependant les frameworks de taille conséquente comme Angular nécessitent une clairvoyance aiguisée pour s’y retrouver, et ne sont donc pas forcément les plus accessibles quand on a un profil junior …

Les avantages d’un framework

  • un gain de temps indéniable
  • une façon de faire guidée, du moins quand la documentation est bien faîte 😀
  • le fait de travailler avec un modèle populaire et communément adopté
  • permet de s’appuyer sur une communauté
  • il y a des tutos et des forums dédiés pour aider

Les inconvénients d’un framework

  • un formalisme imposé, et souvent peu de liberté
  • répond très rarement à 100% de nos besoins
  • induit une courbe d’apprentissage plus ou moins pentue

Quelle est la différence entre une bibliothèque et un framework ?

Ah, voilà la fameuse question tant attendue ! Alors pour répondre à cette question, il faut comprendre exactement qui utilise quoi. Quand on utilise un framework, c’est celui-ci qui va appeler le code. Rappelons-le, il constitue un cadre applicatif qui va englober votre code.
Pour reprendre le modèle MVC, c’est bien lui qui manipule votre code en le découpant sous différentes couches la vue (le design), le modèle (votre front) le controler (qui fait les interconnections entre le modèle et la vue) !
Vous, en tant que développeur vous êtes simplement utilisateur de ce modèle. Vous gérez donc simplement les données que vous y injecter, leurs traitements et leurs affichages. Pour le reste, c’est le framework qui s’en charge et vous n’êtes pas obligé de savoir comment ça se déroule. Vous êtes utilisateur du framework, et non son administrateur.
A la différence, quand vous utilisez une bibliothèque c’est votre code qui utilise cette bibliothèque.
Parce que comme dit, la bibliothèque ne représente qu’un inventaire de ressources disponibles, et vous, vous faîtes appel à ces ressources avec votre code !

Open source et gratuité, bien se renseigner avant de les utiliser !

Si la plupart des bibliothèques et frameworks que vous pouvez trouver sur le web sont libres et souvent gratuits, c’est justement parce qu’ils ont pour but de mettre à disposition le fruit de nombreuses heures de développement !
Chacun peut donc les utiliser librement et contribuer à leurs développements en y ajoutant ses propres fonctions ou classes qu’il juge manquantes.
Attention tout de même, nous parlons ici de bibliothèques et de frameworks open-source et gratuits tel que React ! Ce n’est pas forcément le cas de tous, par exemple la bibliothèque javascript Kendo UI est payante. Vous pouvez bien-sûr réutiliser et modifier les composants qui y sont présents, cependant vous n’avez pas le droit de la publier et de la redistribuer. Si vous souhaitez utiliser une bibliothèque, il est très important de faire attention à cette nuance et de vous renseigner sur la licence de publication de la bibliothèque ou du framework, celà pourrait vous éviter de gros soucis juridiques.

Faut-il absolument utiliser une bibliothèque ou un framework ?

Alors non, vous n’êtes pas obligé d’utiliser un framework ou une bibliothèque !
Vous pouvez très bien travailler avec vos propres outils, et ça a également des avantages, dont notamment :

  • le fait d’être indépendant et libre dans votre façon de faire
  • avoir un outil sur-mesure, parfaitement adapté à vos besoins sans avoir à débroussailler le terrain
  • ne pas vous emmêler les pinceaux en créant du code qui rentre en conflit avec le reste (coucou @BootStrap)
  • connaître mieux que quiconque votre outil

Mais au final, c’est comme si vous créez votre propre framework maison …
Sauf que le votre ne sera pas utilisé par d’autres (sauf si vous le publier et le rendait open-source), et il sera donc un frein pour le travail en équipe.
Alors quand décider si je dois utiliser un framework ?
Tout dépend des circonstances, si la bibliothèque répond à 100% de vos besoins, c’est top ! Sinon, là vous pouvez vous poser la question de partir from scratch !
Ce serait bête de dépenser trop de temps à “remodeler” un outil qui n’est pas adapté à vos besoins. C’est comme essayer d’enfoncer un clou avec une passoir, on peut y arriver mais il va falloir aligner des tas de paramètres.

Partager

Twitter Linkedin

Vous serez peut-être aussi intéressé par :

vignette du blog pour l'article Sylius Plus

Sylius Plus, l’offre entreprise du framework e-commerce et un bundle MarketPlace

Sylius est un jeune framework PHP e-commerce basé sur Symfony, dont la version stable (1.0.0) est sorti en septembre 2017.
Si ce framework fait de plus en plus parler de lui, c’est parce qu’il représente un sérieux concurrent face aux autres plateformes e-commerce traditionnelles telles que PrestaShop Magento, qui sont souvent considérées comme plus lourdes.
Aujourd’hui Sylius en est a sa version 1.5.1 et il passe à la vitesse supérieure en proposant un service plus complet avec une offre entreprise.

Cet article s’adresse en priorité à des lecteurs connaissant déjà le framework PHP Sylius.
Si vous ne cernez pas encore réellement ce dernier, on vous conseille de lire dans un premiers temps notre article présentant Sylius.

Symfony 4 : le framework PHP à prendre en main !

Depuis quelques mois, les développeurs de Numendo ont pu découvrir et tester les nouveautés de Symfony 4 : célèbre framework PHP made in France. Actuellement, la version stable est la 4.1, et la 4.2 devrait passer stable en cette fin d’année.

Angular CDK : Google sort un kit de composants pour Angular

La multinationale américaine a décidé de mettre fin aux tâches répétitives sur son Framework JS. La solution qu’elle propose est un nouveau kit de composants qui facilitera les processus de développement et qui fera surtout gagner du temps aux développeurs. Découvrez Angular CDK