Javascript e Single page apps: la nostra guida

Il mondo Javascript si contraddistingue oggi per un'estrema frammentazione e concorrenza di idee: indice di grande vitalità della community, o di immaturità? Ma soprattutto: come sopravvivere al churn rate?

Vi presentiamo una nuova serie di articoli con i quali cercheremo di mettere chiarezza tra le possibili alternative, ed offrire la nostra idea di sviluppo solido e mantenibile.

Tempo di lettura: 4 minuti

Benvenuti nel bazar Javascript!

Facciamo insieme un riassunto delle ultime puntate? Facciamolo.

Due anni fa il mondo Javascript era nel pieno del suo Rinascimento, alimentato da una maggiore standardizzazione dei browser e dalla scoperta di Node.js come tecnologia in grado di permettere la nascita di front-end build tools di nuova generazione: nel giro di pochissimi mesi, una pletora di nuovi progetti vide la luce.

Dopo solo dodici mesi, sembrava essere ufficiale il predominio di Backbone.js, con Grunt come task runner, Require.js come module loader e Handlebars come libreria di templating. Sei mesi più tardi l'impressione — almeno stando al mood complessivo della blogosfera — era quella di un rimpiazzo completo di tutte le tecnologie appena citate: i nuovi kids on the block? Angular, Gulp e Browserify.

Siamo forse arrivati ad una stabilizzazione? Neanche per sogno… Angular nelle ultime settimane ha subito pesanti critiche riguardo alle sue performance e la dichiarata mancanza di retro-compatibilità della sua prossima major release… insomma, la prossima ondata rivoluzionaria è già alle porte.

È un dato di fatto che framework e librerie Javascript vengono create, glorificate, detronizzate e dimenticate ad una velocità impressionante: in questo momento perfino per uno sviluppatore Javascript d’esperienza risulta essere estremamente difficile investire e scommettere con confidenza su una particolare tecnologia.

Si tratta di una problematica nota e ben documentata anche nell'articolo The State of JavaScript in 2015 di Jimmy Breck-McKye, dove si pongono importanti questioni sulla sostenibilità di questo processo nel medio periodo: l'impressione è che il ritmo non accenni a diminuire, ma che allo stesso tempo gli sviluppatori inizino ad avvertire una sensazione di burn-out ed alienazione.

Manuel Bernhardt, nell'articolo Generation Javascript, paragona la community Javascript ad un gigantesco bazar, invaso da una miriade di banchi che offrono tutti, più o meno, gli stessi prodotti:

Incidentally, I just come back from a trip to Morocco […]. Some of the Souks are extremely tourist-oriented: everyone tries to sell you their stuff (which is colorful and shiny) – and every few stalls or so you find about the same things.

See, there is a dark side to the bazaar. Imagine you are a newcomer to Javascript development these days. Which libraries should you pick to get started? No, wait, which package manager should you pick to get started?

Effettivamente, non è difficile trovare delle somiglianze :)

Il nostro manuale di sopravvivenza

Forti di una buona (e variegata) esperienza lavorativa su client-side-applications, e da un ulteriore mese di “laboratorio interno” dedicato ad esplorare le principali alternative disponibili sul mercato, abbiamo deciso di lanciare una nuova serie di post con l'obiettivo di:

  • condividere una panoramica sufficientemente approfondita dei principali competitors per ogni differente contesto (task runners, frameworks, etc.);
  • descrivere le esperienze pratiche vissute con ciascuna delle alternative;
  • esporre, alla luce dei risultati ottenuti, la nostra scelta aziendale per i futuri lavori, in grado di darci il miglior compromesso tra rapidità di sviluppo, popolarità, solidità e mantenibilità nel tempo.

Sembra interessante? Di sicuro per noi è stato un viaggio pieno di sorprese! La serie si intitola BazarJS, e questa è una piccola anteprima degli argomenti che andremo a toccare di settimana in settimana:

Indice

  1. Task runner (Grunt, Gulp, Broccoli)
  2. Module loader e Package managers (RequireJS, AMD, CommonJS, Browserify, Bower, Npm)
  3. Preprocessori CSS (Stylus, less.js, Sass)
  4. Preprocessori Javascript (Coffeescript, ECMAScript 6, Typescript)
  5. Framework (AngularJS, Ember.js, React)
  6. Librerie di supporto (Superagent, RSVP, Immutable, Lodash)
  7. Tests, linting e code coverage

Pronti? :) Il primo post, relativo ai task runner, verrà pubblicato questo venerdì. Seguici su Twitter o tramite feed RSS per rimanere aggiornato!

Hai trovato questo post interessante?Scopri chi siamo

Made with Middleman and DatoCMS, our CMS for static websites