At the moment I'm sold on Mode-View-Intent, which is more delarative and non-OOP. I also have the feeling it lets me compose a bit more easy. DOMStream = view(model(intent(DOM))) DOMStream.subscribe(render) intent() takes the DOM, wires up some interactions and returns streams "of" these interactions model() takes streams of interactions, wires them up with data retrieval and mutation streams and returns these data-s…
I think that's called a controller or presenter in other patterns.
Actually your view and intent also do what a controller would do. The DOM is your actual view, and your data your actual model.