I'm learning exactly those (hard) lessons right now, as a (very) junior developer. I'd written a couple of CRUD-with-embellishments apps, using Django and Meteor. Now I'm staring down the length of my first non-framework JS app and learning huge amounts about software architecture, design, workflow, etc.
It's intimidating, frustrating, and occasionally paralysing, but I can track my growth as a developer, rather then just tracking my app's growth.
Once I built my own 'CMS' using express and RethinkDB, I had to also set up on a templating system (so I chose React server-side). I ended up using a bunch of other tools or technologies as well. All of these were on my list, but I never really found a good excuse to look into them. But now I had to pick something (as opposed to settling for HAML in Rails, or any of the other 'popular' approaches, and actually figure out what the advantages and drawbacks were, as well as how to tie all these things together.
Not only was it fun in a way that building Rails sites often isn't anymore, it was incredibly educational.
On the other hand, learning the basics of a language, or more importantly learning how programming works and how software is written, is going to be far more powerful than learning a framework first, even though that is often the step most newcomers take.
Learning the ins and outs of JavaScript for example is going to help you immensely in navigating the mess of JS churn and you'll be able to learn the framework du jour much faster than approaching it framework-first.