I found a vanilla JavaScript library that is super light weight called Navigo that does the SPA part. And I've been using manual DOM replacement by reading my "partials" on the fly and then caching the results to reload them if needed to replace the MVC partial.