- API then pre-existant for mobile or other clients
- extremely fast once loaded
- complete control over site and models in frontend
- less server load
- you can use CDN to make you app really fast everywhere
- more complex to develop:
- You need an API
- You need your models & validations & tests twice
- You need a frontend framework
- Seo is more complicated
When to use?
- use JS as Backend language since you can reuse lots of code
- need an API anyway
- you just want to prototype something
- you have time/resource pressure
What to use: Backbone or Ember.js?
- Backbone is less magic and more flexible, but you need to put it together yourself, which can be quite time-consuming to do right
- Ember comes with great defaults, but it's not as widely used (jet) and can be harder to customize
Single Page Apps are great. However, they are also more time-consuming to develop. And this is a biggie. The disadvantages of not having an SPA are managable. And if your product really takes of, you can still switch to a SPA.