There’s a disturbing trend in website development, the “Single Page App”. It’s trendy, popular, and awful.
Gmail is an example of single page app style done correctly. Your stupid website isn’t gmail. If your website has 10 or more screens, make each of them a separate URL.
My criticism is not directed at projects with a high degree of complexity, where a single page app style might be appropriate. Even for those, code should be carefully organized for easier debugging. If your website is a bunch of static screens or forms, then each screen should be its own url. The single page app style adds unnecessary complexity and difficulty debugging.
For a “traditional” or “multi-page” website, the user can link to any specific page. For the single page app, it’s the same URL for everything, so you can’t link to a specific screen. The single page app breaks the way normal websites work, preventing users from linking to specific page elements.
A fool says “With a single page app, you can preload images on optimize the experiece for the user!” For the “type 1″ single page apps I’ve seen, you couldn’t navigate at all until all the images finished loading, probably because it was written incorrectly. For a “type 2″ single page app, you’re still making an AJAX call for each request.
For my current project, it’s a single page app that makes AJAX calls to mutilate the html DOM. There was no handover from the previous programmer, just “Here’s the code, it’s your problem now.” It’s a standard “CRUD” app, a bunch of forms that move data in and out of the database. The single page app style is totally inappropriate. Each form really should be a separate page.