“I asked Matt if it was ok to repatriate this article since his blog is now offline (will be back soon), Backbone is not portrayed in a good manner here, but I can understand his frustrations and found his point of view interesting” – Cedric Dugas
JMVC provides a clear way to CRUD your data and test it, and has a bunch of decent documentation and tutorials. What turned me off was that it’s super heavy. My gut feeling is that when one project solves too many problems, it doesn’t do them well. From the sheer amount of stuff it generates and perusing the documentation I honestly got overwhelmed. I thought, hell, if I’m learning their way, why not learn it from the ground up and really get a good feel for it? This is also the same principal that kept me on Slackware until 2005 — but is also the reason I’m at home on the command line.
I started a simple Todo List app that was meant to be a quick learning exercise. Creating Backbone Models and Collections was a snap. Creating a View was less than straight forward. Is their View a View-Model? Are you supposed to have one large View and many sub-views (templates)? The frustrating part was that all examples on the web showed many ways to use a View — and none of them worked for me.
I sat back and thought to myself that I was biting off too much at the first pass and that I would work my way through one of their example apps. I typed it all up, then clicked refresh on the page. It erred out. I double checked everything. The error was something like “undefined blah blah in underscore.js on Line 8”. Not exceedingly helpful — especially to a beginner. I even went so far as to directly copy the app and its templates. It failed to run.
I gave up.
I think these frameworks are a great idea, and something like them are going to be a necessity as the web matures, but they introduce a whole slew of their own issues. If I had to use one today, I would recommend JMVC. It’s the most mature of the three projects and it shows.
I’d like to see a mixture between Knockout and JMVC rolled together like ActionView, ActiveRecord, and ActionController in Rails. Backbone would fill Sinatra’s slot as the barebones implementation. Who wants to make the first MVCMVVM framework? You (and the Romans) could call it “2915”.