About this book
When I first began web development with .NET 2.0 and ASP.NET Web Forms, there was only one paradigm for web applications: the server-side paradigm. This pattern involves making a request for the full page content, including scripts, images, and ads, every time the user performs an action on the page. For the kinds of web applications we were building when I started, this paradigm worked for the most part. If users wanted a richer and more interactive experience, it was typically implemented as a desktop application.
With the introduction of jQuery, we saw the possibility of pushing more of the logic that was previously done on the server side of our websites to the client side, communicating back and forth with the server using AJAX. The problem with this approach was that jQuery doesn’t provide guidance for how to structure a client-side application, so many projects implemented during this era devolved into spaghetti code as the size and complexity of the client-side application grew. Smart developers recognized this problem and took the opportunity to create frameworks to simplify building rich user interfaces on the client side. Popular examples include Angular1, Backbone.js, and Knockout.js. With these frameworks, it became easy to write full applications as SPAs that would traditionally have been built as desktop apps.