Как реализовать навигацию по ссылкам на странице без необходимости полной перезагрузки страницы?

Как называется технология, которая позволяет обновлять только содержимое определенного блока на странице, без полного обновления всей страницы, когда переходите по ссылкам внутри этого блока?
  • 3 октября 2023 г. 10:57
Ответы на вопрос 2
Технология, которая позволяет обновлять только определенные части страницы без полной перезагрузки, называется AJAX (Asynchronous JavaScript and XML) или асинхронные запросы к серверу.

Для реализации навигации по ссылкам без перезагрузки страницы можно использовать следующий подход:

1. Создать обработчик события для ссылок, чтобы перехватывать клики на них.
2. Внутри обработчика события отправлять асинхронный запрос на сервер, используя, например, объект XMLHttpRequest или более современные методы, такие как fetch API или Axios.
3. При получении ответа от сервера обновить содержимое нужного блока на странице с помощью JavaScript.
4. При необходимости, изменить URL страницы, используя объект History API, чтобы пользователи могли использовать кнопки "Назад" и "Вперед" браузера для навигации.

Пример кода на JavaScript:

```javascript
// Обработчик события для ссылок
function handleLinkClick(event) {
  event.preventDefault(); // Отменить стандартное действие клика по ссылке

  // Отправка асинхронного запроса на сервер
  const url = event.target.getAttribute('href'); // Получить URL из атрибута href ссылки
  fetch(url)
    .then(response => response.text()) // Получить содержимое ответа в виде текста
    .then(data => {
      // Обновить содержимое нужного блока на странице
      const container = document.querySelector('#content'); // Заменить "#content" на селектор вашего блока
      container.innerHTML = data;

      // Изменить URL страницы
      history.pushState({}, '', url);
    })
    .catch(error => console.error(error));
}

// Назначить обработчик события для всех ссылок на странице
const links = document.querySelectorAll('a');
links.forEach(link => link.addEventListener('click', handleLinkClick));
```

При такой реализации, при клике на ссылку, страница не будет полностью перезагружаться, а только определенный блок будет обновлен новым содержимым, полученным с сервера.
Single Page Application (SPA). Основная идея заключается в том, чтобы все необходимое содержимое было доступно на одной странице, но скрыто. Фактически, все страницы сайта представлены в виде элементов на этой странице, но они находятся в состоянии "display:none", а только текущая страница отображается. В некоторых ситуациях может происходить полная перерисовка страницы каждый раз при выполнении какого-либо действия (к сожалению, это стало нормой). 

Состояние приложения может быть сохранено в URL в виде идентификатора якорной ссылки (часть URL после символа #). Идея состоит в том, чтобы при щелчке на такую ссылку страница автоматически прокручивалась до соответствующего элемента на странице. Однако, если элемента не существует, это не считается ошибкой. Этот подход называется навигацией с использованием якорных ссылок (anchor navigation), и браузеры предоставляют удобный способ работы с историей навигации.

Загрузка и передача данных осуществляется с помощью AJAX-запросов с использованием стандартного Fetch API или XMHttpRequest, либо с помощью библиотек, основанных на них, например, JQuery AJAX.
Похожие вопросы