I had the exact same question after getting frustrated in learning Angular and the irritating inter-component communication that appeared to add needless complexity. Then someone pointed out to me that if I wanted to create a button using pure Javascript only, I would have to do things like:
var btn = document.createElement("BUTTON"); // Create a <button> element
btn.innerHTML = "CLICK ME"; // Insert text
document.body.appendChild(btn); // Append <button> to <body>
Why wouldn't you simply get the HTML from the server? Then you'd have the loading and clunky interface that would feel more like a traditional website rather than a web application.
Front-end frameworks are designed to make your website look and feel like an app, that doesn't require loads per page because a lot of the work is done on the client side. It frequently means creating a "single page application" (SPA), and if you really had to build an SPA using vanilla JS only, that would be a tremendous feat indeed due to all of the ancillary stuff you'd need to build in order to make it work.