I'd love to know what others are thinking in this space. I've flip-flopped a lot on this issue myself, looking at both sides I think good interactive web design is just simply hard no matter how you slice it.
I've done Rails+PJAX along with minimalistic simple jQuery components (similar to Bootstrap's javascript) I think it works quite well for very simple content focused designs but falls short as interactions get more complicated. Lots of convinces that I find in modern JS-MVCs (Angular and Ember come to mind) are missing, like model-DOM bindings (so not Backbone).
Now I'm playing around with AngularJS on something new and building that on top of Rails as an API (and for asset pipeline support which works quite well with Angular). This is also pretty good. Angular's style fills in a lot of gaps on the client-side that jQuery components did not. However I also see myself duplicating efforts in the views that would be more effortless on the Rails side. This is a side effect of different tools doing different things. I can't really take advantage of certain rails-isms if I choose this route, but the trade-off seems ok for me as I do feel it makes much of the interactive design on the client-side easier (so far, so good anyways).
That said I don't yet feel like I can really come down on either side of the debate in terms of what is better for me. I do think if you switch in Rails for "client-side MVC" most of the author's statements are ironcially still true. Particularly the statement "they lock you into certain patterns" is arguably more true for doing everything the "Rails way" than for a good client-side MVC library.
I do want to say two things. One, I've found Backbone to be the least productive of both of the choices I described above. It was a step up for a team with minimal Javascript experience, but once I understood the lay of the land I left it since I didn't really feel it was doing anything for me. Two, Backbone is definitely not what I would call a client-side MVC pattern. It lacks model bindings for starters.
I'd like to see what the author thinks after some more time looking at the latest Ember or Angular. I'm also looking to see what happens with Flight as that is sort of a beefed up version of the components+events approach I had been taking before. Again, perhaps both approaches have their place depending on what your needs are.
Addendum: When I was doing Rails+PJAX I sort of envisioned a concept where I delivered both data, layout and style with HTML+CSS (as semantic as needed) and used JS to handle interaction. Interestingly none of the MVC frameworks seem to support doing this very well (including Angular which seems best suited to the concept). Flight seems to which is why I find it interesting.
PJAX-rails has some unfixable problems, which goes back down to layouts.rb in the actionpack. I had to fork it to make it usable to me. (github/eduardordm/pjax) A nice post from Yehuda about turbolinks:
Most frameworks do support initial payloads (discourse does that with Ember, for instance)
This discussion is really important to the internet as a whole, some frameworks are potentially dangerous, not only to search engines but to the long-term availability of information.
I agree I found PJAX a pain in the ass in a number of scenarios. It's great for basic navigation but not so easy for anything more. Perhaps we just tried to do too much with it, but in the end we were able to get it to work for our needs. That said our app was very read heavy and content driven so it made sense. I would be very hesitant to consider it for anything more than that though which is what makes me a bit skeptical of the author's conclusions. I'm arguably no expert though.
I've done Rails+PJAX along with minimalistic simple jQuery components (similar to Bootstrap's javascript) I think it works quite well for very simple content focused designs but falls short as interactions get more complicated. Lots of convinces that I find in modern JS-MVCs (Angular and Ember come to mind) are missing, like model-DOM bindings (so not Backbone).
Now I'm playing around with AngularJS on something new and building that on top of Rails as an API (and for asset pipeline support which works quite well with Angular). This is also pretty good. Angular's style fills in a lot of gaps on the client-side that jQuery components did not. However I also see myself duplicating efforts in the views that would be more effortless on the Rails side. This is a side effect of different tools doing different things. I can't really take advantage of certain rails-isms if I choose this route, but the trade-off seems ok for me as I do feel it makes much of the interactive design on the client-side easier (so far, so good anyways).
That said I don't yet feel like I can really come down on either side of the debate in terms of what is better for me. I do think if you switch in Rails for "client-side MVC" most of the author's statements are ironcially still true. Particularly the statement "they lock you into certain patterns" is arguably more true for doing everything the "Rails way" than for a good client-side MVC library.
I do want to say two things. One, I've found Backbone to be the least productive of both of the choices I described above. It was a step up for a team with minimal Javascript experience, but once I understood the lay of the land I left it since I didn't really feel it was doing anything for me. Two, Backbone is definitely not what I would call a client-side MVC pattern. It lacks model bindings for starters.
I'd like to see what the author thinks after some more time looking at the latest Ember or Angular. I'm also looking to see what happens with Flight as that is sort of a beefed up version of the components+events approach I had been taking before. Again, perhaps both approaches have their place depending on what your needs are.
Addendum: When I was doing Rails+PJAX I sort of envisioned a concept where I delivered both data, layout and style with HTML+CSS (as semantic as needed) and used JS to handle interaction. Interestingly none of the MVC frameworks seem to support doing this very well (including Angular which seems best suited to the concept). Flight seems to which is why I find it interesting.