Pro

  • 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

Cons

  • 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?

Pros

  • use JS as Backend language since you can reuse lots of code
  • need an API anyway

Cons

  • 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

Conclusion

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.

Resources