Our Guide to Javascript and single-page apps

The world of Javascript is currently characterized by extreme fragmentation and intense competition between different ideas. This has caused us to ask ourselves a couple of questions. Firstly, is this proof of the community's vitality, or of its immaturity? Secondly, how is it possible to survive the current churn rate?

In this new series of articles we will do our best to clearly explain what the different alternatives available to those working with Javascript are, and to set out our ideas about what constitutes solid, maintainable development.

Estimate reading 4 minutes

Welcome to the Javascript bazaar!

How about starting with a summary of what happened “Previously in Javascript”? Let’s do it.

Two years ago the world of Javascript was going through a full Renaissance. This came about thanks to increased browser standardization and the discovery of Node.js, a technology that made it possible to create a new generation of front-end tools. As a consequence, in the space of just a few months, a plethora of new projects saw the light of day.

After twelve months, the predominance of Backbone.js - with Grunt as its task runner, Require.js as its module loader and Handlebars as its templating library - seemed to be official. Six months later, at least according to the prevailing mood of the blogosphere, all of these technologies had already been replaced: the new kids on the block were Angular, Gulp and Browserify.

Has the situation now stabilized? Not it in the least… during the past weeks, Angular has been subjected to a storm of criticism about its performance and the alleged lack of retro-compatibility of its next major release… in short, the next wave of the revolution is already at the door.

It’s a fact that Javascript frameworks are created, glorified, dethroned and forgotten with shocking speed. At this point even Javascript developers are finding it difficult to bet on or invest resources in any one particular technology.

This problem has been well documented by Jimmy Breck-McKye in his article The State of JavaScript in 2015, in which he questions the medium term sustainability of this process. According to Breck-McKye, the process shows no sign of slowing down and developers are beginning to suffer from burn-out and alienation.

In his article Generation Javascript, Manuel Bernhardt compares the Javascript community to a gigantic bazaar invaded by a myriad of competing stalls, all offering more or less the same products:

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?

It isn’t difficult to see the similarity :)

Our survival manual

Based on our good (and varied) experience of working on client-side-applications, and on an additional month of “in-house laboratory” work dedicated to exploring the main alternatives available on the market, we have decided to launch a new series of posts with the objective of:

  • haring a sufficiently detailed overview of the principal competitors for each * of the different task (task runners, frameworks, etc.);
  • describing our first-hand experience with each of the alternatives;
  • explaining the choices we have made as a company, in order to strike the best * balance between development speed, popularity, solidity and maintainability * over time.

Sound interesting? For us, it has certainly been a voyage full of surprises! The series is entitled BazaarJS, and this is a little taster of the topics that we’re going to be touching on in the coming weeks:

Index

  1. Task runners (Grunt, Gulp, Broccoli)
  2. Module loaders and Package managers (RequireJS, AMD, CommonJS, Browserify, Bower, Npm)
  3. CSS Preprocessors (Stylus, less.js, Sass)
  4. Javascript preprocessors (Coffeescript, ECMAScript 6, Typescript)
  5. Frameworks (AngularJS, Ember.js, React)
  6. Support libraries (Superagent, RSVP, Immutable, Lodash)
  7. Testing, linting and code coverage

Follow us on Twitter or by RSS feed to keep up to date!

Did you find this interesting?Know us better

Made with Middleman and DatoCMS, our CMS for static websites