Lots of good answers to this. Angular JS and Durandal JS are the most popular SPA frameworks. If you like Knockout take a look at Durandal JS, a simple SPA framework built using KnockoutJS for all the MVVM features. The SharePoint JS client object model will give you most of what you need with regards to SharePoint, but you can use Jquery to make most AJAX calls to a MVC hosted application.
Its important to keep in mind that the SharePoint JS client object model doesn't allow cross site collection queries. If that's a need take a look at utilizing SPServices or building your own MVC endpoints. If using the SharePoint JS csom fulfills you business needs its best to stick with that though.
John Papa has an extensive course on utilizing Durandal JS, with knockout and BreezeJS with the .net Web API as a backend. He's created a Visual Studio project template.
Durandal JS website
John Papa Hot Towel Template
SPServices on Codeplex
Building a SPA using SPServices