Before we look into what sorts of projects are suitable for server-side or client-side web applications, let us first examine the architecture of both types.
How We Build Server-Side Web Applications
Here is how we traditionally build server-side web applications. A simplified explanation of what happens is an HTTP request gets made from the user’s browser to the web server, you get data back to your web server, and it’s dynamically put into an HTML template on the server. The HTML then goes back into the client.
How We Build Client-Side Web Applications (aka a Single Page Applications)
Which One Should You Use to Build Your Web Application?
It all boils down to whether you need a hand-crafted, awesome wooden chair that’s a work of art, or if you need chairs from IKEA. If the latter, consider keeping your web app on the server. If you need that hand-crafted awesomeness and someone’s paying you to do a really responsive app with an experience akin to a desktop application, then you will be much happier using an MVC framework.
There is a slight exception with Ember, though it is a bit confusing. They have a newer HTML and templating engine, HTMLbars, that’s faster than what they previously had because it’s not string-based right now. This means there is no need for an in-memory phantom browser like PhantomJS to render your pages on the server. However, every time you configure your server you have to make sure your SEO is right and there is a chance you’d end up screwing it all up, which can make some people nervous.
If Someone Already Built an AngularJS App and Want to Make it More SEO-Friendly, Is There Any Solution?