В современных веб-приложениях взаимодействие с сервером и
маршрутизация часто требуют гибкой работы с параметрами запроса. В
экосистеме JavaScript понятие Fresh связано с рендерингом и
обновлением данных на клиенте или сервере с минимальной задержкой и
максимальной эффективностью. Основная цель — обеспечить свежие данные
без излишней перезагрузки страницы и без нарушения состояния
приложения.
Параметры запроса (query parameters) — это часть URL
после знака ?, представляющая собой набор пар
ключ-значение, разделённых символом &:
https://example.com/page?user=123&theme=dark
Здесь user=123 и theme=dark являются
параметрами запроса. В JavaScript для их работы используется объект
URLSearchParams:
const url = new URL('https://example.com/page?user=123&theme=dark');
const params = new URLSearchParams(url.search);
const user = params.get('user'); // "123"
const theme = params.get('theme'); // "dark"
URLSearchParams поддерживает методы getAll,
has, set, append и
delete, что позволяет гибко управлять параметрами.
Fresh для работы с параметрамиFresh применяет подход без состояния (stateless) для
рендеринга страниц. При передаче параметров запроса данные остаются
«живыми», что позволяет обновлять компонент при изменении URL без полной
перезагрузки.
Пример функции, которая извлекает параметры запроса в
Fresh:
export function handler(req, ctx) {
const url = new URL(req.url);
const params = url.searchParams;
const userId = params.get('user');
const filter = params.get('filter');
return ctx.render({ userId, filter });
}
Здесь ctx.render создаёт новый рендеринг компонента с
актуальными параметрами запроса. Такой подход позволяет:
В Fresh поддерживается динамическая маршрутизация через
паттерны URL. Например, маршрут /users/[id] позволяет
обрабатывать разные идентификаторы пользователей. Параметры запроса при
этом доступны через объект URLSearchParams в функции
обработчика:
export function handler(req, ctx) {
const { id } = ctx.params; // динамический сегмент пути
const search = new URL(req.url).searchParams;
const sort = search.get('sort');
return ctx.render({ id, sort });
}
Важно различать два вида данных:
params) — часть URL,
определяющая ресурс (/users/42 →
id = 42).searchParams) —
дополнительные фильтры и опции (?sort=asc).На клиентской стороне Fresh позволяет изменять URL без
полной перезагрузки, сохраняя состояние приложения. Для этого
используется объект URL и метод
history.pushState или
history.replaceState:
const params = new URLSearchParams(window.location.search);
params.set('page', '2');
const newUrl = `${window.location.pathname}?${params.toString()}`;
window.history.pushState({}, '', newUrl);
После изменения URL можно инициировать повторный рендеринг компонента
с обновлёнными параметрами, используя встроенные механизмы
Fresh:
export async function onLoad(ctx) {
const params = new URL(ctx.request.url).searchParams;
const page = params.get('page') || '1';
return ctx.render({ page });
}
URLSearchParams для удобного доступа и
управления параметрами.pushState всегда
обновлять компонент через рендеринг Fresh, чтобы данные оставались
актуальными.null.Работа с параметрами запроса в Fresh обеспечивает
эффективное и реактивное управление данными в веб-приложении, снижает
нагрузку на сервер и повышает отзывчивость интерфейса.