Если вы хотите создать более современный фреймворк, вам следует использовать javascript для динамического отображения контента (как вы предложили в своем вопросе). Чтобы сделать это, я бы использовал фреймворк, такой как jQuery, поскольку он делает асинхронный вызов запросов намного проще. Для этого вы должны кодировать одну страницу с определенной областью, отмеченной для динамического содержимого.
На стороне сервера вы должны настроить либо страницы, либо базу данных для возврата основной области содержимого, которая будет изменяться по запросу.
На стороне клиента вы можете использовать jQuery load , чтобы поместить запрошенный контент в область контента.
$('#contentArea').load('url', function() {
//callback area in case there is other stuff you want to do with js
location.hash = 'blah';
});
Возможно, имеет смысл изменить хэшмарк страницы, чтобы страницы по-прежнему выглядели статичными и были связанными при изменении содержимого.
location.hash = 'blah';
Кроме того, вам нужно будет переопределить поведение ссылок по умолчанию, возвращая false при их нажатии.
myLink.click = function() {
$('#contentArea').load('url', function() {
//callback area in case there is other stuff you want to do with js
location.hash = 'blah';
});
return false;
}
Я думаю, что это был бы хороший урок для студентов, поскольку он показывает различие между клиентской и серверной сторонами, а также тем, как их динамически подключать с помощью javascript.