For the last couple of years I've been developing projects as an api layer coupled with a dumb 100% javascript front end. The api layer always returns json data, and the front end requests and consumes it. 3 projects down the line and this is so far been great success. The back end server is now free to do what it really needs to be doing - get data to the front end.
You can write different front ends (mobile, voice etc.). They all request and consume the same data. And, you earn an api you can open to the public