Angular Vue React

L’evoluzione delle web-app (e con esse, native-app e progressive-web-app), ha promosso (ed è stata promossa da) la nascita di librerie e framework orientati allo sviluppo front-end.

Tra queste, tre elementi di spicco sono Angular di Google, React di Facebook e Vue.js di Evan You. Nonostante vengano spesso trattate come alternative equipollenti (se non addirittura antitetiche), queste tre librerie hanno approcci filosofici assai differenti.

Di seguito esploreremo le tre soluzioni, senza la pretesa di realizzare un confronto esaustivo, ma focalizzandoci su quegli elementi che possono risultare di maggiore importanza per chi, in azienda, si trova a dover decidere quale framework adottare.

Fai il primo passo verso l'era Cloud Native: richiedi un Assessment e poni le basi per la tua strategia.

Angular

È un framework all-in-one (e opinionato) che offre e richiede una precisa strutturazione del codice fortemente basata su Typescript; sviluppare in Angular significa dunque sviluppare alla maniera di Angular, sfruttando il più possibile lo static-typing (lo si può anche ignorare, ma il costo sulla manutenibilità del progetto a lungo termine sale).

Se da un lato ciò solleva il team dalla progettazione architetturale profonda dell’app, e porta quindi a un risparmio di risorse, dall’altro essa riduce il grado di libertà a disposizione.

Un altro aspetto non trascurabile è la possibilità di integrare rapidamente nel processo di sviluppo nuove risorse umane: l’ingresso nel progetto sarà relativamente dolce, ma solo a patto di una conoscenza pregressa, la cui curva di apprendimento, in virtù della sua complessità e vastità, è piuttosto ripida per un programmatore non esperto.

Tutti questi aspetti rendono Angular adatto a soluzioni complete, dove l’applicativo sarà progettato da zero sulle caratteristiche del framework e il team sarà precedentemente formato su di esso.

React

È un framework non opinionato orientato alla sola gestione della view tramite l’utilizzo dei component (l’unità fondamentale del framework), importante al punto tale che persino il routing, gestito da librerie third parties, è strutturato su di esso.

Altra peculiarità è l’uso di JSX (ed eventualmente TSX se si decide l’uso associato a Typescript), uno strumento potente che permette nella versione Native, sviluppata appositamente per app Android/iOS, di costruire View native anziché HTML con notevole risparmio di risorse del device. Tuttavia l’implementazione di JSX può facilmente confondere e trarre in inganno uno sviluppatore, che visivamente sarà tentato di associarlo a un linguaggio di markup piuttosto che di programmazione.

La mancanza quindi di una struttura all-in-one rende la curva di apprendimento morbida, anche se l’uso di JSX può disorientare e rallentare (inizialmente). Ciò dà inoltre modo di inserire React in modo mirato all’interno di realtà già esistenti, per potenziarne e modernizzarne singole parti.

Vue.JS

È nato concettualmente da AngularJS (padre spirituale di Angular), con lo scopo di semplificarne e alleggerirne la struttura focalizzandolo sulla gestione della View.

È il più leggero in termini di core-base nonostante abbia, a differenza di React, una libreria interna per il routing, che lo avvicina per certi versi ad Angular.

La sua curva di apprendimento è probabilmente la meno ripida in assoluto, essendo potenzialmente implementabile con un semplice tag <script> nel mark-up, a differenza di React e Angular che richiedono l’uso di una CLI (che Vue.js comunque offre).

Questo, insieme alla completezza della sua documentazione, dà a Vue.js un forte vantaggio in una situazione in cui il team è molto fluido e/o non ha nessuna o quasi conoscenza pregressa su alcun framework.

Supporto della community e dell’industria

Ad oggi, pur godendo tutti di un ampio supporto della community, React e Vue.js sono tra i più apprezzati, mentre Angular si colloca qualche posizione più in basso nelle classifiche di gradimento

Quantitativamente parlando, la ricerca di StackOverflow dimostra che il framework più utilizzato è React (35.9%); troviamo poi Angular (25.1%) e infine Vue.js (17.3%).

Brand illustri e le loro scelte di framework

Angular

Ecco alcuni esempi di siti realizzati in Angular (fonte):

React/React-Native

Di seguito, invece, alcuni esempi di siti che usano React (fonte):

Vue.js

Infine, prendiamo in considerazione alcuni esempi di siti che usano Vue.js (fonte):

Prima di trarre conclusioni da questi elenchi è necessario fare alcune precisazioni: molte delle attribuzioni di siti e app a una tecnologia presenti in rete non sono suffragate da alcuna dichiarazione ufficiale da parte del brand o dei team di sviluppo che avvalori tale associazione.

Ad esempio la gran parte dei siti associati a Vue.js esaminati per questo articolo non mostra evidenze di tale uso nel codice, né sono state trovate dichiarazioni ufficiali in merito (nel caso di Nintendo, addirittura, una rapida analisi con Wappalyzer mostra tracce dell’uso di React e Angular, ma non di Vue.js!). Senza considerare che spesso si associa un brand a un framework senza specificare quale prodotto appartenente alla galassia di quel brand ne faccia reale uso.

Per tutte queste ragioni le associazioni di prodotti a un brand senza dichiarazioni ufficiali o prove empiriche che ne attestino la genuinità sono marcate con un (*).

Fatte queste doverose precisazioni, si può notare come React sembri essere il framework più usato dall’industria dell’intrattenimento e dello sviluppo nativo, dove responsività e comparto visivo giocano un ruolo di primo piano. Angular ha trovato un suo ambiente nel campo istituzionale e dei servizi, mentre Vue.js sembra essere scelto in modo piuttosto equilibrato tra vari settori.

Conclusioni

Per riassumere:

  • Angular è il framework più maturo, con una community vivace ed è un all-in-one. La curva di apprendimento ripida potrebbe scoraggiare i meno esperti, ma per aziende con grandi team di developer che usano già TypeScript e che sono in cerca di stabilità potrebbe essere un’ottima soluzione.

  • Anche React può ormai essere considerato un framework maturo e inoltre ha un grande numero di contributor. Si tratta di una soluzione da prendere in considerazione soprattutto nel caso di startup o aziende che hanno bisogno di agilità e di uno stack leggero.
  • Vue.js, il framework più recente dei tre, si sta affermando come importante competitor per le altre due soluzioni. Chi cerca semplicità e flessibilità può trovare in Vue.js una valida opzione, anche (e soprattutto) nei casi in cui si abbia necessità di modernizzare un’applicazione legacy con uno stack facile da introdurre.

cloud-native assessment