One Page JavaScript Apps replace old school generation of pages on the server.
One page apps manipulate the DOM and make ajax json calls to the server to get json data.
In the past servers used to generate the entire page and send it back to the browser. Each request resulted in a fresh new page.
One page apps on the other hand load some libraries on the request for the first page and then keep the code cached and manipulate the DOM every time the user clicks on something.
Some One page app frameworks allow you to incrementally load libraries or modules. For example if you login as an admin the one page app can load a new module just for admin functionality. This dynamically loading allows the initial downloads of the app to be kept to a bare minimum.
Devs either use fully fledged frameworks like Angular or they use libraries like React and bolt them together with other technologies.
The advantage of fully fledged frameworks is:
the libraries are pre configured so you do not need to be an expert to set the project up
the libraries have been pre configured using best practise and it provides structure to the project. This allows lots of devs to work on the same code base. Fully fledged frameworks are therefore good for big projects with lots of devs working on them.
The disadvantage of fully fledged frameworks are:
the framework has to deal with lots of use cases and this introduces complexity which increases the learning curve
you cannot easily switch out libraries and use your own chosen ones
At the moment the most popular library is ReactJs and the most robust framework is Angular.