A Simplified View of MV* Web Pattern Differences

I was asked the other day about the difference between common web architecture patterns and I stumbled around a bit explaining.  After thinking about it some I came to the conclusion that I'm much better sketching these types of things out, so I figured I capture this in a post.

Much of my understanding of the difference between web patterns comes from Martin Fowler's post on the subject.  While its a fascinating read, it does take a while to read and digest.  Hopefully my rudimentary boxes and arrows can give a fairly straightforward depiction of the differences.  Solid arrows indicate dependency direction, and dashed arrows signify data binding.

MVC (Model View Controller)

Example Framework: Backbone/Marionette
Highlight: Databinding between view and model


MVP (Model View Presenter)

Example Framework: GWTPHighlight: Presenter handles all presentation logic

MVVM (Model View ViewModel)

Example Framework: KnockoutJS/Durandal
Highlight: Databinding between View and ViewModel

So what's Angular?  Angular describes itself as an MVW framework (Model View Whatever), as do others.  You can set it up to do any of the 3, but if you use its advertised features, especially the databinding between html and the scope object would suggest its more aligned with the MVVM school of thought.