history api (
habrahabr.ru/post/123106 ) для смены url , или опираясь на location.hash (aka что-то вроде site.ru/
#trololo).
А насчет одного html документа - это по желанию, создавайте хоть 100500, и насчет body тоже по желанию, то есть можно и конкретный div менять, а не полностью body