I'm nearing the end of a prototyping/proof of concept phase for a side project I'm working on, and trying to decide on some larger scale application design decisions.  The app is a project management system tailored more towards the agile development process.  One of the decisions I need to make is whether or not to go with a traditional multi-page application or a single page application.Currently my prototype is a traditional multi-page setup, however I have been looking at backbone.js to clean up and apply some structure to my Javascript (jQuery) code.  It seems like while backbone.js can be used in multi-page applications, it shines more with single page applications.  I am trying to come up with a list of advantages and disadvantages of using a single page application design approach.  So far I have:AdvantagesAll data has to be available via some sort of API - this is a big advantage for my use case as I want to have an API to my application anyway. Right now about 60-70% of my calls to get/update data are done through a REST API.  Doing a single page application will allow me to better test my REST API since the application itself will use it.  It also means that as the application grows, the API itself will grow since that is what the application uses; no need to maintain the API as an add-on to the application.More responsive application - since all data loaded after the initial page is kept to a minimum and transmitted in a compact format (like JSON), data requests should generally be faster, and the server will do slightly less processing.DisadvantagesDuplication of code - for example, model code.  I am going to have to create models both on the server side (PHP in this case) and the client side in Javascript.Business logic in Javascript - I can't give any concrete examples on why this would be bad but it just doesn't feel right to me having business logic in Javascript that anyone can read.Javascript memory leaks - since the page never reloads, Javascript memory leaks can happen, and I would not even know where to begin to debug them.There are also other things that are kind of double edged swords.  For example, with single page applications, the data processed for each request can be a lot less since the application will be asking for the minimum data it needs for the particular request, however it also means that there could be a lot more small request to the server.  I'm not sure if that is a good or bad thing.What are some of the advantages and disadvantages of single page web applications that I should keep in mind when deciding which way I should go for my project?
Advantages and disadvantages of building a single page web application
web applications;application design
The biggest disadvantage is that the client must have JavaScript enabled and be powerful enough to run a fair amount of it.  It's also harder to satisfy accessibility concerns or anything else that relies on parsing static HTML (though something knowing your specific API can probably do better than HTML scraping).  Finally, it's easier to have significant memory leaks.As far as duplicating code or putting business logic on the client - I'm not sure how much of that you have to do.  If the model on the client is a View-Model (a model that matches up with the world as the UI sees it, not a business model) then the logic that matches the ViewModel up to the business model can reside on the client, the server, or a bit of both.  It depends on how you feel about having your API contain a client-specific facade vs. having the client translate UI inputs into API calls.You might also want to look at knockout.js.  I can't say if it's better than backbone but it may fit your project better.