Запросы и изменения страниц на одностраничных сайтах работают совершенно иначе, чем для обычных веб-страниц.Одностраничные сайты используют JavaScript для изменения содержимого страницы, а не для запроса новой страницы с сервера.Одностраничные сайты могут запрашивать контент с сервера, но обычно этот контент представляет собой просто данные, в то время как структура (HTML) страницы определяется клиентом в JavaScript.Единственный раз, когда полная HTML-страница отправляется сервером, это первоначальный запрос, на который нужно ответить index.html
.
В вашем примере вы могли бы выполнить эту работу, добавив скрипт, который запрашивает содержимоес сервера и изменяет DOM при нажатии на ссылку.
Например:
const a1 = document.querySelector("a.link1");
const a2 = document.querySelector("a.link2");
a1.addEventListener("click", () => {
setContent("<p>Content from link 1</p>")
});
a2.addEventListener("click", () => {
setContent("<p>Content from link 2</p>")
});
function setContent(content) {
const contentDiv = document.querySelector("div.content");
contentDiv.innerHTML = content;
}
a {
text-decoration: underline;
color: blue;
}
a:hover {
cursor: pointer;
}
<h1>My Page</h1>
<a class="link1">link 1</a>
<a class="link2">link 2</a>
<div class="content">
</div>
И обратные вызовы событий щелчка могут запрашивать контент с вашего сервера вместо того, чтобы жестко кодировать контент, как в этом примере.Обратите внимание, что тогда сервер должен отвечать только фрагментом HTML, а не всей новой страницей.
Например, вы можете использовать следующую функцию для получения содержимого для элемента div.content
:
function fetchData() {
const response = fetch("/gallery");
return response;
}
Если вы новичок в работе с одностраничными сайтами, вы можете воспользоваться такой структурой, как React , Vue или Angular , чтобы начать и получитьлучшее понимание или даже использование для этого проекта.