

JS allows websites to render only content that changes without reloading the entire page on every request (e.g., AJAX). Many of the logic/code that used to be on the server-side is now on the client-side. The user doesn’t need to wait between requests and page refreshes. Web applications nowadays require heavy use of JavaScript to generate content on the fly.

However, these require extra plugins and are not as ubiquitous as JavaScript. A couple of languages can run in the browsers besides JS, using Web Assembly techniques or using deprecated Java Applets or Flash. However, providing the website with even more responsiveness, speed, and enhanced user interaction requires bringing the page generation closer to the users (in the browser rather than a remote server). That was a considerable improvement, and most of the pages served today use this approach. Later, in web 2.0, developers started using server-side programming languages (like PHP, Ruby, Java, …) to generate HTML pages dynamically based on user input and data stored in a database. In the beginning, web applications were just static HTML pages, which required programmers to change the code (HTML, CSS, JS) to change the content. The web application development process has been evolving over the years.

TL DR: You need to use JavaScript heavily in order to make responsive and interactive web applications.

Libraries give you a lot of flexibility, while frameworks have opinionated ways of doing things but can save you from writing boilerplate code. Using a library, YOU are in control, but there is an inversion of control using a framework: the framework calls you. Notice that BackboneJS is not a framework but a library. Backbone.js is a JavaScript library, among many others, that is gaining special attention in the web development community because of its ease of use and the structure that it provides to JavaScript applications.
