Michele Nasti

Thoughts on what I learn

Pro e contro di AngularJs dopo 2 mesi di lavoro

Questa è una chat tra me e il mio ex-collega/amico Davide, sull'esperienza fatta con AngularJs. Forse anche loro svilupperanno un POC (proof of concept) e voleva un po' di info. Credo che queste "opinioni" possano servire anche ad altri. Enjoy 🙂

D.: Come vi state trovando con angularjs?

Io: la cosa di AngularJs è lunghetta; ci sono pro e contro. Di sicuro Angular è un framework all-or-nothing ... Non si può usare solo una parte di Angular, come il data binding, senza usare ad es. le direttive, o la dependency injection. Ci sono parti di Angular che si possono saltare, ma il "core" è abbastanza ampio. Quindi lo si deve imparare per forza tutto prima di capirne tutte le potenzialità.

Un altro svantaggio di Angular è che è JavaScript, e JavaScript è un linguaggio da studiare completamente, ossia il modello a oggetti, i prototype, gli scope, gli === al posto di == ... Pensa, ho scoperto dopo mesi di lavoro che alcuni ignorano la possibilità di provare codice nella console del browser!

Ci sono anche alcuni vantaggi, però: è ormai il framework più diffuso a livello mondiale, da un po' esistono migliaia di estensioni, direttive, filtri, etc. che qualcuno ha già scritto e fa proprio quel che vuoi tu.

Durante lo sviluppo ho sentito due mancanze principali: un esperto di Angular che ci guidasse (ho dovuto imparare quasi tutto da me!), e senza conoscerne i reali vantaggi è stato scelto forse un po' per moda... scelta azzeccata comunque. E poi la mancanza di linee guida per tutti gli sviluppatori. Specialmente all'inizio ognuno faceva le cose di testa sua. Chi usava jQuery, chi usava Bootstrap classico (quando c'è angular-ui), ... Queste cose però si risolvono , diciamo.

Quel che mi manca invece è la possibilità di fare refactoring efficienti ... L'unico IDE decente per Angular (o meglio per JavaScript) è WebStorm, che si paga (45$), ma nel mio team nessuno l'ha voluto adottare ... Troppa resistenza. E gli errori di sintassi si scoprivano solo a runtime, quindi trial&error.

Alla fine della fiera cmq il software lo stiamo realizzando, i problemi li abbiamo tutti aggirati pure con una buona infrastruttura, e l'esperienza fatta è molto preziosa ... Non saprei che altro dirti; i problemi di "efficienza" che tanti dicono su Angular noi non li abbiamo visti!

D.: scusa e che ide avete usato? Cmq anche noi stiamo per far partire un POC su Angular. Durante il POC sceglieremo se usare Brackets, Atom, o addirittura Visual Studio community edition 2013

Io: Il migliore in assoluto è WebStorm

D.: ovviamente imbarcarsi su AngularJs senza una base solida su javascript è un grosso problema. Chiaro , ti parlavo di quelli free. Quelli che ti dico io sono tutti free.

Io: Gli sviluppatori sono abituati a Eclipse per il backend e quasi tutti usano eclipse anche per il frontend. Difficilmente li convinci se non gli fai vedere che funziona ctrl+spazio (che comunque in Eclipse JavaScript non c'è!) o altre amenità. Ho pure mostrato che in WebStorm c'è, anche se non funziona benissimo, e comunque manco l'hanno voluto usare... Ho visto un pò di brackets ed è OK... Non so visual studio etc come vanno

D.: cmq anche io ho letto diversi articoli sui famosi ‘problemi di perfomance' di angularjs. Quante UI aveva il progetto che avete usato?

M: Un centinaio di UI. Era una vecchia applicazione Visual BASIC portata in web

D.: beh good avrete modularizzato bene... ma avete usato anche RequireJs per caricare asincronamente i moduli?

Io: No niente RequireJs

D.: avete usato qualche template per la struttura del progetto ? Tipo angular seed? o avete usato qualcosa di più ‘enteprise' ?

M: una sorta di "template" ce lo siamo inventati noi. Su questa parte non siamo stati troppo smart ... Eravamo all'inizio e non sapevamo che fare. Dovevamo "buttare le mani"

D: io penso che useremo qualcosa di questo tipo: <a href="https://github.com/johnpapa/gulp-patterns" target="_blank" rel="nofollow">https://github.com/johnpapa/gulp-patterns</a>

M: Se potessi tornare indietro userei yeoman che ho usato a casa

**D.: **<a href="http://slides.com/thomasburleson/using-requirejs-with-angularjs#/" target="_blank" rel="nofollow">http://slides.com/thomasburleson/using-requirejs-with-angularjs#/</a> <a href="https://github.com/ThomasBurleson/angularjs-Zza-BMEAN" target="_blank" rel="nofollow">https://github.com/ThomasBurleson/angularjs-Zza-BMEAN</a>

**M: **Si si purtroppo sono cose che ho letto DOPO che ho iniziato a lavorare su angular. Purtroppo non ho partecipato alla fase di setup del progetto. Ah dimenticavo, un altro svantaggio probabile è che AngularJs 2 sarà una cosa totalmente diversa

D.: si visto

Io: Ma non uscirà subito e cmq angular 1 sarà supportato per molto tempo ancora

D.: cmq il modo in cui si fanno le web application (anche con backend Java) sta cambiando. Insomma SPA: oggi è AngularJs 1,domani AngularJs 2 o web components, ma architetturalmente il futuro è questo. L'era delle pagine generate dal server è finito 🙂

Io: Il web si interroga come ha fatto angularJs a vincere ... ci sono altri progetti concorrenti che qualitativamente stanno lì, come Backbone e Ember... Bo

D.: Perchè AngularJs, secondo me, è più enterprise. Le due cose ‘enterprise' che ha di più sono le direttive e i moduli. Ti permette di strutturare, riusare, testare... poi ok c'è anche la dependency injection... ah, questi javisti che si mettono a inventare framework javascript!

Io: a quanto pare è stato scritto da un Javista ...

D.: Bravo!

Io: Mi hai anticipato, ho mia moglie che mi sta tallonando 😀

D.: idem! e allora buona serata, e grazie per i feedback!