Page.js — это легковесная библиотека для маршрутизации на стороне клиента в приложениях на JavaScript. Она позволяет создавать одностраничные приложения (SPA), управлять URL и историей браузера без перезагрузки страницы. Одним из ключевых аспектов работы с Page.js является правильная настройка базового пути, который определяет, откуда начинаются все маршруты приложения.
Базовый путь (base path) используется для того, чтобы
все маршруты правильно сопоставлялись с текущей структурой URL на
сервере. По умолчанию Page.js предполагает, что приложение размещено в
корне сайта (/). Если приложение находится в подкаталоге,
например /app/, необходимо явно указать этот базовый
путь.
Пример без базового пути:
page('/home', () => {
console.log('Главная страница');
});
page();
Если это приложение размещено на example.com/app/,
переход на /home вызовет ошибку, так как браузер будет
искать страницу по адресу example.com/home.
Базовый путь задаётся при инициализации Page.js с помощью функции
page.base(). Она принимает один аргумент — строку,
представляющую путь, с которого начинается маршрутизация.
page.base('/app');
page('/home', () => {
console.log('Главная страница приложения');
});
page();
После вызова page.base('/app') все маршруты будут
рассчитываться относительно /app. То есть маршрут
/home станет доступен по URL
example.com/app/home.
Слэш в конце Рекомендуется указывать базовый путь без завершающего слэша. Page.js корректно обрабатывает оба варианта, но единообразие упрощает поддержку кода.
page.base('/app'); // предпочтительно
page.base('/app/'); // тоже работаетМаршруты и подкаталоги Если приложение использует вложенные маршруты, базовый путь автоматически учитывается при формировании URL:
page.base('/app');
page('/dashboard', () => console.log('Панель управления'));
page('/dashboard/settings', () => console.log('Настройки панели'));
page();
Переход на /app/dashboard/settings корректно вызовет
соответствующий обработчик.
Согласованность с сервером Сервер должен быть настроен на обработку всех внутренних маршрутов приложения, иначе при обновлении страницы или прямом переходе на внутренний URL возникнет ошибка 404. Базовый путь помогает синхронизировать клиентскую и серверную маршрутизацию.
В некоторых случаях базовый путь может зависеть от окружения (например, разработка локально и деплой на продакшн). Для этого его удобно задавать через переменную:
const BASE_PATH = process.env.NODE_ENV === 'production' ? '/app' : '';
page.base(BASE_PATH);
page('/', () => console.log('Главная'));
page('/profile', () => console.log('Профиль'));
page();
Такой подход позволяет использовать одну и ту же конфигурацию маршрутов на разных окружениях без изменения кода.
После настройки базового пути полезно проверить, что маршруты работают корректно:
example.com/app/example.com/app/profileЕсли маршруты не срабатывают, необходимо убедиться, что:
page.base() вызван до объявления
маршрутовhistory.pushStateБазовый путь корректно работает с динамическими сегментами маршрута:
page.base('/app');
page('/user/:id', ctx => {
console.log('ID пользователя:', ctx.params.id);
});
page();
Запрос example.com/app/user/42 вызовет обработчик и
выведет ID пользователя: 42. Page.js автоматически удаляет
базовый путь из URL перед сопоставлением с маршрутом.
Базовый путь является фундаментальным элементом настройки Page.js,
обеспечивающим корректное сопоставление URL и стабильную работу SPA вне
зависимости от расположения приложения на сервере или подкаталогах.
Правильное использование page.base() упрощает управление
маршрутами, предотвращает ошибки при обновлении страницы и позволяет
гибко адаптировать приложение к различным окружениям.