I am astonished by the really positive feedback these frameworks are getting lately on HN and other places.
For sure, they tackle a common problem and offer some really sleek solutions but the one thing that really bothers me is their use of HTML and templates:
<a href="#" {{ action "edit" target="parentView" }}>Edit</a>
Or something along those lines.
What is really the difference between the previous line of code and this:
<a onclick="doSomething">Click me!</a>
Their use of HTML as something that it is not reminds me of ColdFusion and the really unreadable and unmaintainable HTML it required.
So I really have to ask, what happened to separation of concerns and using HTML for markup, CSS for styling, and JavaScript for behavior?
Why is mixing markup and behavior so appealing? Or is it just something you live with in order to benefit from other aspects of these frameworks?
How maintainable is the code you produce using these frameworks?
The impressive feature of knockout (and angular) is automatic updating of UI when model data changes.
Knockout calls it "viewmodel", that is, the model is not necessarily your data model (though it could be!) but rather it's a model for the view: the state of the viewmodel determines the state of the UI.
Why would you say that this is wrong?
It even has a wikipedia page: http://en.wikipedia.org/wiki/Model_View_ViewModel (not that this matters, but it's a counter argument to "it's not standard").