There's basically 4 strategies:
1. Give the client a full html page
2. Give the client pre-rendered html snippets
4. Make the client do the template rendering probably using a library such as mustache.
1. Should be the default and the fallback for dumb devices such as spiders and old browsers
2. Is ideal if the page doesn't change much - typical content heavy sites. You have to have proper urls and history management though.
3. is optimal for "it's an app not a website"
4. is only OK if you know your clients have plenty of CPU to spare. So not mobile basically...
It might be possible to have code where you just transparently wrote normal server-side views and the framework intelligently decided whether to render on the server or client and handled all the plumbing for you.