Hacker News new | ask | show | jobs
by sgt 5295 days ago
Thanks for this insight. Having no experience in these new JS frameworks, I'm going to eventually have to choose one, and based on recent HN comments I had almost dismissed Knockout since Backbone is "clearly" better. The points you raised are very informative and now I'm back to looking at Knockout.
1 comments

See also my other comment below: http://news.ycombinator.com/item?id=3355963

I have to say that both frameworks have great supportive communities. As for features here's a very simplified comparison:

Backbone pros:

- eases code structuring with Models and Collections

- gives routing (history management)

- template engine agnostic

Backbone cons:

- Out-of-box UI support is weak.

- Binding plugin is weak

- No automatic dependency detection between the fields (I'm sure there are some external libraries to support that)

Knockout pros:

- first-class dependency detection and event model

- powerful UI bindings (be sure to check out custom bindings - they are very convenient and can make your life a lot easier)

- top-notch templating

- it's believed that MVVM pattern is more suitable for inexperienced developers and eases collaboration in team. My experience confirms that.

Knockout cons:

- No models, doesn't help you with project structure - you're on your own

- Model plugin is there but I can't compare it to Backbone, sorry. It does have synchronization with RESTfull backend.

- Tied to a specific template library. It's possible to integrate other templates with custom providers but I don't know how easy/hard it is.

- No routing support

I picked KO because I believe that framework should do the hardest part and it's ok if the easier parts don't get addressed well. When starting a project I asked myself what would be harder: deal with UI elements or with AJAX. UI seemed harder and Knockout addresses that a lot better than Backbone, so we went with Ko. My team loves it.

------------

Also these day you can pick both and get them running together: http://kmalakoff.github.com/knockback