Most of the development I had done prior to that had been traditional web applications. I have a Java background so that meant I used Struts 2 and Spring MVC. This architecture relies on the user submitting a request to the server. The server then processes the request and generates the html to display back to the user. Many times with this type of architecture, much of the page does not change, but you force a complete re-rendering of the entire page. It is rather wasteful.
Single page web applications on the other hand only refresh a part of the page. In the example I mentioned above for the first single page app I wrote, we would make an AJAX request to a Struts 2 web application. It would call whatever necessary back end services we required, However instead of generating HTML, we would populate a view model and then Struts 2 would automatically serialize it to JSON. Thus the only thing going back and forth between the browser and the server was JSON. All rendering was done client side. You can also have the server render a snippet of HTML to update part of the page.
The benefit of this model of development is the page is much more responsive. The amount of information going across the wire is generally smaller.
Some resources I’ve used to learn.
My next post is here and talks about how to structure your code.