Asynchrony at the heart of everything
Why do we need frameworks
Why did this happen, why do JS frameworks exist at all?
Because in web development there are some important things that are not directly native in the language. They are needed to one degree or another in almost every project. You have to write your own implementation from scratch or use a ready-made framework.
Data binding between the view and the controller is an important part of modern applications. It is necessary to synchronize the user interface with real data changes. All frameworks have some way to do this, regardless of whether they are a complete embodiment of the MVC, MVVM model, or just a presentation layer.
The biggest achievement of AngularJS is the introduction of trend to the component structure of the application, which was quickly picked up by both Vue and React. This idea was so successful that a special interface of web components appeared in the language itself. Unfortunately, it does not have a data binding mechanism, so frameworks are still irreplaceable.
Choosing a framework for learning, remember - this is just a tool to increase developer’s opportunities. You must understand exactly what problems the language solves in this way. The frameworks will change, but with a similar understanding you can easily figure out any of them.
In linguistics, it has long been known that it is useful to study similar languages simultaneously. This allows you to better understand their structure, noting the similarities and differences. Knowledge of two JS frameworks works in the same way.
If you have several ways to solve the same problem, you begin to better understand the problem itself.
What is under the hood
Assembling is the fastest growing area in JS. Productivity is growing rapidly, the size of the bundle is rapidly decreasing. Developers squeeze everything out of the process. That is why you must understand this magic. It is incredibly important to understand what the tools you use do. How exactly they convert your code and in what order. How your modules are packaged and how you can influence the build process. Do not put your program at the complete disposal of the assembler, continue to control it.