Cos’è un Framework
Premessa:
Molto spesso nella community front-end dibattiamo su quale sia il framework migliore, sulle varie differenze e sui vantaggi che uno o l’altro framework portano al nostro team. Ma forse, ancora prima di dibattere sulla scelta, dovremo accordarci tutti sulla definizione di Framework e sulla differenza con le librerie. La domanda può sembrare sciocca, quasi banale. Ma allora, qual è la risposta alla domanda ‘React è un Framework o una libreria?’.
Framework è una parola inglese che si traduce in italiano con impalcatura o struttura. Si tratta di una traduzione che rimanda all’edilizia o all’architettura, ma inserendola nel contesto informatico indica appunto la struttura attorno al quale viene costruito qualcosa.
Un’altra definizione di Framework che può essere d’aiuto per comprenderne l’effettivo significato è: una serie di decisioni architetturali scelte dal team nella realizzazione di un progetto.
Indirettamente, scegliendo un framework stiamo delegando delle decisioni architetturali al framework stesso. Entrando più nello specifico, scegliendo un framework stiamo vincolando delle scelte. Ad esempio quale linguaggio usare o se essere reactive , nel caso di framework front-end come Angular siamo vincolati a usare TypeScript o la libreria RXJS (reactive Exstension).
Si potrebbe affermare che il Framework chiama il nostro codice che a sua volta invoca e usa le Librerie.
Prendendo ad esempio Date-fns: si tratta di una libreria molto usata, ma allo stesso tempo facilmente sostituibile. A differenza del framework che, anche se è effettivamente sostituibile, richiede un processo molto più lungo e articolato.
Alcuni esempi:
- js viene definito più un framework
- Moment è una libreria
- js è una libreria difficile da sostituire
React invece è un framework o una libreria?
React nasce come libreria, ma si comporta come un framework.
Basti pensare che in React vige la regola “ogni cosa è un componente” che vincola lo sviluppatore a usare determinati componenti, come il router.
Possiamo quindi dire che React è un framework “mascherato”.