Как же я жду, когда эту апишку можно будет смело тащить в продакшен!
Как мы до сих пор работали со SPA:
• подписываемся на клики по ссылкам;
• или пытаемся вклиниться в History API;
• по клику делаем
preventDefault;• имитируем работу браузера, но через JS (ходим за данными, собираем компоненты, рендерим);
• обязательно руками обновляем
window.history.И потом ещё спорим на конференциях, какая библиотека для роутинга самая правильная.
Navigation API переворачивает процесс в правильную сторону:
• пользователь как-то изменяет URL страницы (ссылка, JS, серверный заголовок);
• мы подписываемся на событие изменения урла;
• вклиниваемся в ивент, если нужно, через
event.intercept;• имитируем работу браузера (ну а как без этого).
Кода меньше, урл становится единым источником правды, не толкаемся в History API с самим браузером. Хорошечно же!
Осталось дождаться 2.5 года, когда фича станет Widely Available. И когда фреймворки это внутрь себя затащат, чтобы нам меньше думать нужно было.
https://web.dev/blog/baseline-navigation-api