There are a number of items that need to be addressed from your question. I'm going to say MVC
when what I really mean is "MVC
and all of it's related variants."
I've been hearing a-lot about the "new" MV* frameworks.
As you should; there's a number of advantages (and disadvantages) to using an MVC framework or similar.
Also keep in mind that MVC has been around since the 70's and was first popularized with the use of SmallTalk. See Martin Fowler's various essays on GUI architectures for additional information.
but I much prefer to write clean, modular code in raw JavaScript
So you should see the appeal of MVC then. :-)
MVC was created to help enforce the exact thing you're proclaiming to want within your code. UI's (Views) change. Logic to drive the UI (Controller*) changes. Data sources and access mechanisms (Model) change. MVC was designed to encapsulate change and give the best odds for each component to be migrated to the next incarnation of the application. By separating out the layers into individual components, the risk of change is minimized.
* By Controller
, I mean the modern use of the term not the original use from SmallTalk days. And if that doesn't make sense, then ignore this sidenote.
Given a methodical/structured/SOLID approach to writing a JavaScript application, where OOP, SOC, SRP and other design principles are adhered to, wouldn't the usage of MV* frameworks be superfluous?
Perhaps it's superfluous, perhaps it isn't. How big is your application? How devoted is your team to "doing the right thing?" How well does your team understand the domain and where responsibilities should lie within each and every single class?
That's a lot of dependencies on others that you're introducing there. Of course, your code is perfect and you'll never make a design mistake. But how are you going to shield the project from the human fallibility of others? How are you going to shield the project for the complexities of scale? A handful of views is nothing to keep in your memory. But what about hundreds?
MVC provides structure to help avoid some of those problems.
But at the same time, MVC isn't a silver bullet. Here's some of the valid criticisms against it.
It tends to be heavy weight for implementing. Where you could have gotten away with 1 class, you'll now have three. On smaller projects, you're right to question the benefits of MVC.
It can be frustrating to stay within the structure of MVC. There's always the temptation to let Controller code bleed into the View, or let the View directly access the Model. After you write your umpteenth wrapper function, you'll wonder why you're doing it.
MVC presumes your app will live forever and will change technologies. If you never change the UI, the data source, or the business logic then you kind of wasted your time in encapsulating those layers in anticipation of change.
In summary, MVC is a tool just like any other. Its longevity and resurgence in awareness proves how valuable it has been. But it's not a silver bullet, not a panacea for all programming ailments. Understand it and use it (or not!) as appropriate for your projects.