diff --git a/README.md b/README.md index abb6d96fc7..a32dad75e4 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,12 @@ -![TodoMVC!](http://addyosmani.com/blog/wp-content/uploads/2011/09/logo.gif) +##TodoMVC - A common demo application for popular JavaScript MVC frameworks (0.2) -##TodoMVC - A common demo application for popular JavaScript MVC frameworks (0.1 pre) -####Including SproutCore 2.0, YUILibrary, JavaScriptMVC, Spine.js, Backbone, Sammy, KnockoutJS, AngularJS and more. +##Introduction +Developers these days are spoiled with choice when it comes to selecting an MVC framework for structuring and organizing JavaScript web apps. Backbone, Spine, SproutCore, JavaScriptMVC..the list of new and stable solutions goes on and on, but just how do you decide on which to use in a sea of so many options?. -####Screenshots: - -Three of the seven demo apps included: - - - -####Live Previews: [http://addyosmani.github.com/todomvc/](http://addyosmani.github.com/todomvc/) - - -##Introducing TodoMVC - -Over the past year, we've seen interest in lightweight JavaScript MVC frameworks continue -to increase steadily. Backbone, Spine, SproutCore 2.0, YUILibrary, JavaScriptMVC... -the list of choices has never been so ever-growing and developers looking to select an -option would be forgiven for feeling lost in a sea of what may appear to be (at face) -quite similar solutions. - -In many cases it comes down to very subtle differences between these frameworks, so how -do you choose exactly?. In my previous posts on structured application development I've -attempted to distinguish the pros and cons of such solutions, but when it comes down to -the MVC coding style they offer perhaps there's another way these differences can be -compared. - -You may know that many frameworks now come with their own variation of the 'Todo' example. -It's a simple demo that illustrates how models, views and controllers may be used to write -a completely functional list-based application. - -###Whilst many frameworks attempt to include a version of the 'Todo' example, there are issues here: - -####Problem 1: Implementations are inconsistent -There's no standard or specification around how the Todo application should be written - indeed, some may ask if a demo app even needs one. - -When you actually delve into framework demos you might be surprised at just how much they can actually differ. Some solutions will opt for a completely different MVC structure to the application, others will opt for JavaScript templating to insert new items whilst some will prefer cloning HTML markup to insert new 'rows' instead. Again, the lack of what we consider a consistent experience causes problems here. - -Regardless, this is why although some frameworks will implement the example with similar features and a look/feel consistent with their peers, others will stray away from this quite heavily. - -This is an issue because if you're attempting to directly compare how one framework might achieve a task vs another, very disparate implementations make this significantly more difficult to do. - +To help solve this problem, I created TodoMVC - a project which offers the same Todo application implemented using MVC concepts in most of the popular JavaScript MVC frameworks of today. Solutions look and feel the same, have a common feature-set and make it easy for you to compare the syntax and structure of different frameworks so you can select the one you feel the most comfortable with. - -####Problem 2: Lack of a Todo example altogether -I can't speak for all developers, but after reviewing the feature list on such solutions, my first port of call is usually to look for their Todo app as I find this the quickest way to determine whether I'm going to like using their brand of MVC for structuring my apps. This isn't in any way stating an incapability of determining this from code samples in a frameworks docs, but rather, I prefer to review differences in a complete application. I know that other developers feel the same about this too. - - -###Solution - - -So, I had an idea (which you may or may not find useful): -