Все зависит от того, какой опыт вы хотите дать своему пользователю.
Если вы хотите иметь одностраничное приложение, которое загружается только один раз и действует как настольное приложение с загрузкой данных через запросы XHR.
Если вам нужно много страниц, каждая из которых делает что-то свое (вы все равно можете загружать данные в фоновом режиме, стиль github.com)
Первый - когда вы выбираете что-то вроде SproutCore или Cappuccino. В этом случае вы не будете использовать возможности представления HTML вашей серверной платформы (CakePHP / Code Igniter), а вместо этого будете использовать их для получения данных из базы данных и отправки их в формате JSON.