Websites used to be clunky.
There was a time when people were ok with waiting (and waiting and waiting) for a web page to load over a slow modem. Then they would click on what they wanted and wait some more. Waiting was just part of using the internet. That was the past, technology has improved. Your customers are no longer content to wait.
New frameworks have fixed this.
It started when jQuery abstracted away the browser specific particularities. Since then, more modern frameworks have taken it to a new level. AngularJS, Ember.js, and Backbone.js organize code and offer features that have changed browser development from a parlor trick into a serious UX tool.
Does this break the web's rules?
Some people argue with this approach. This isn't the way the web was "designed to work." Well, of course not. The web was designed in 1989 to share research.Progress has always come by looking at what something can do, not what something was designed to do.
What is the alternative?