Previous
Next

Qual è la differenza tra un Framework ed una Libreria?

Qual è la differenza tra un Framework ed una libreria?

Per capire qual è la differenza tra un framework ed una libreria basti pensad ad Angular.

Angular è un Framework  JavaScript open-source, gestito da Google;  è molto popolare tra chi si occupa di Sviluppo di Applicazioni Web ed è stato accolto positivamente da migliaia di sviluppatori ; è anche altrettanto vero però che sia stato criticato da altri per la sua complessità, per il modello di programmazione proposto e per la difficoltà di convivere con altre librerie JavaScript.

Inizialmente, nonostante l’ interesse suscitato, non è stato tra i Framework più utilizzati. Questo per due semplici fattori:

1) la “Giovinezza” del progetto (la versione 1.0 è stata rilasciata nel 2012)  

2)Angular non è effettivamente così semplice come appare in un primo approccio.

Spesso chi è incuriosito dallo sviluppo di applicazioni con AngularJS  “prova” inizialmente ad utilizzare un tutorial o a frequentare un workshop ed è colto da un  entusiasmo iniziale nel vedere come, con minime istruzioni, sia possibile avere già un prototipo funzionante e questo è  uno stimolo notevole per suscitare l’interesse dello sviluppatore. Spesso però accade  anche che ci si fermi in “superficie” e ci si immagini che tutto sia fattibile con quei pochi concetti appresi nel corso della presentazione, scontrandosi invece con la complessità del Framework.
Infatti AngularJS è un Framework complesso, per la cui effettiva padronanza possono servire mesi di utilizzo sul campo.

A tal proposito possiamo iniziare con il chiarire la differenza tra un Framework ed una Libreria, che potrebbe sembrare banale ma non lo è.


Spesso chi lavora con JavaScript è abituato ad utilizzare Librerie che semplificano la gestione dello Sviluppo. Le aspettative dello sviluppatore non tengono conto che bisogna seguire una certa logica, un certo modo di ragionare, quello che spesso viene indicato come the Angular way.
Possiamo dire quindi che una libreria è un insieme di funzionalità che semplificano lo sviluppo di una particolare problematica di programmazione e il Framework, al contrario, è più concentrato nel fornire una infrastruttura per lo sviluppo di applicazioni che offrire funzionalità per risolvere un problema specifico.

Possiamo dire che il problema principale che un Framework intende risolvere è proprio l’organizzazione dell’architettura di un’Applicazione.

AngularJS è un Framework di sviluppo JavaScript con particolare propensione al supporto di Single Page Application. È molto importante fare questa distinzione tra Framework e Librerie perché spesso AngularJS viene confrontato con librerie come jQuery o altre…….. con risultati errati.
Paragonare AngularJS con una Libreria vuol dire che si sta iniziando con “il piede sbagliato” perchè ci si aspetta qualcosa che il Framework non prevede di offrire. Infatti, uno degli errori più comuni è pensare di utilizzare Angular per creare delle pagine HTML a cui aggiungere un po’ dinamismo con JavaScript.

Questo approccio difficilmente ha successo con applicazioni Angular di una certa complessità. È opportuno pensare che le applicazioni Angular (e più in generale, qualsiasi Single Page Application) sono “applicazioni client-side” e non “pagine Web”. Angular fornisce tutto quanto occorre per creare applicazioni moderne che sfruttano le più recenti tecnologie, come ad esempio le Single Page Application, cioè applicazioni le cui risorse vengono caricate dinamicamente su richiesta, senza necessità di ricaricare l’intera pagina.

Quando si crea un’Applicazione complessa, la sua architettura è fondamentale per la manutenibilità; AngularJS mette a disposizione diversi elementi per definire l’architettura di un’applicazione: controller, servizi, direttive, filtri, ecc…. che si fondano su un concetto basilare dell’organizzazione del codice: il concetto di modulo. In sintesi, il nostro codice si inserisce in questa infrastruttura per implementare il comportamento specifico della nostra applicazione.

Scopri il nostro corso di Angular 7!