В библиотеке Page.js автозапуск маршрутизатора
происходит сразу после его подключения и конфигурации маршрутов. По
умолчанию вызов page() без параметров запускает обработку
текущего URL, что может быть нежелательно в случаях, когда требуется
выполнить дополнительную инициализацию или динамическую регистрацию
маршрутов перед стартом навигации. Для управления этим процессом
используется метод page.start() и параметр
dispatch: false.
page.start()Метод page.start() служит для явного запуска
маршрутизатора. Если не вызывать его сразу, Page.js не будет
обрабатывать текущий URL до тех пор, пока не произойдет вызов
start.
Пример:
page('/home', () => {
console.log('Главная страница');
});
page('/about', () => {
console.log('Страница о нас');
});
// Автозапуск отключен
// page.start(); // не вызываем сразу
В этом примере маршруты зарегистрированы, но переход на текущий URL не выполняется автоматически.
dispatch: falseДля отключения обработки текущего URL при старте маршрутизатора
применяется параметр dispatch. По
умолчанию dispatch равен true, что приводит к
немедленной навигации. Установка dispatch: false
предотвращает вызов обработчиков маршрутов для текущего пути:
page.start({ dispatch: false });
Пояснение:
dispatch: true — маршрутизатор сразу вызывает
соответствующий обработчик для текущего URL.dispatch: false — обработчики вызываются только при
последующих переходах (page.show или
page(path)).Такой подход особенно полезен при динамической подгрузке данных или компонентов перед рендерингом.
fetch('/routes.json')
.then(res => res.json())
.then(routes => {
routes.forEach(r => page(r.path, r.handler));
// Запуск после регистрации всех маршрутов
page.start({ dispatch: false });
});
page('/dashboard', () => console.log('Dashboard'));
page('/login', () => console.log('Login'));
// Решение о редиректе принимается динамически
const userLoggedIn = false;
page.start({ dispatch: false });
if (userLoggedIn) {
page('/dashboard');
} else {
page('/login');
}
В этом случае текущий URL не обрабатывается автоматически. Роутинг запускается только после принятия решения, что предотвращает ненужные редиректы.
Метод page.start() также принимает параметры
popstate и hashbang, влияющие на обработку
истории браузера. Комбинация с dispatch: false позволяет
полностью контролировать навигацию:
page.start({
dispatch: false,
popstate: true,
hashbang: false
});
popstate: true — позволяет реагировать на кнопки
«назад/вперед».hashbang: false — отключает использование хэш-адресов
для маршрутов.Таким образом, отключение автозапуска не ограничивается только блокировкой текущего URL — оно становится частью гибкой стратегии управления навигацией и истории.
page.start({ dispatch: false }) —
основной способ отключить автозапуск.start, что
важно для динамических приложений.Такой подход обеспечивает безопасное и предсказуемое поведение маршрутизатора, предотвращая ненужные срабатывания обработчиков до полной готовности приложения.