Suggestions for "framework"/library for learning?


I’m using atom-shell to learn web development. (I’m writing an app to record my working hours.) So I want to work my way up the stack so that I can learn the advantages of each item of infrastructure I’m using by having experienced the pain that it is trying to solve.

So I have written code to read the work items from a file, and to populate a table with the work items. I’ve put an empty table in my HTML (just column headings) and I’ve used createElement, createTextNode and appendChild to populate the table. It was nicely painful (goal fulfilled).

Now I want to work my way up the abstraction ladder. What is a good next step for me to try? Backbone? Knockout? Riot? React? Surely not Angular or Ember or Meteor, those do too much. I will have to experience a little more low-level pain so that I can appreciate them properly. (In fact I don’t actually have any interaction yet, so I don’t need routes, so maybe those come into play once I’m there.)

Any suggestions appreciated.


Riot 2.0 looks awesome to me.


Ooooh, this is a great idea. I’ve been meaning to do something like this too – it can be unnecessarily difficult to learn more complex frameworks / libraries if you don’t have a thorough understanding of what problems they were created to solve.

Personally, I’m for learning Backbone for this. React is cool (and Riot too! hadn’t even seen it until now), but Backbone is really small and has completely annotated source code, which means you can more easily learn not just how to use it and what problems it solves, but exactly how it works too.


I have a lot of experience with Backbone and I found that Marionettejs makes backbone a lot simpler and more powerful. I am not sure how compatible these frameworks are with atom-shell, but I guess they are if you guys are talking about them. I myself was looking into using polymer for this, but might attempt to use marionette and backbone if it’s possible.


My initial reading of Backbone indicates it wants to talk to a RESTful service, and I’m not quite clear how that should be working under Atom-Shell. But it’s too early to say.


Just in case anyone is interested, I’ve put a ball of spaghetti code up on Github:

So my first implementation of this attempted to list the worklog entries by DOM manipulations: I had a static HTML file with a tbody element in it, and I navigated to that element and then used DOM methods to add children to it for each worklog entry from a file. This was very nicely very painful. So I ripped it out and replaced it with mustache.js even before my first commit.

I’m not sure what I can gain from Backbone here. I can create models in Backbone and I can send them to the server using REST. But there is no server. So what do I do? Maybe I will try Riot next.