Если с частями pathname все довольно просто, и я даже не заморачивался написанием урло-генератора для них, то с параметрами, которые search string всегда был геморрой. На php от него удалось избавиться, а для js хотелось бы подыскать готовый, потому что я вообще не знаю как на js колдовать с геттерами и сеттерами, без которых геморроя будет не меньше.
Суть такова. На примере как работает пхпшный парсер-генератор:
echo $get->url_home()->page(1)->order('da')->onpage(32)->some('param');
дает типа
http://www.example.com?page=1&order=da&onpage=32&some=param
после того как дал берет (на любой другой странице) и можно поменять или выкинуть параметры
echo $get->url_home()->page(null)->order('dd')->onpage(null)->some('no');
дает
http://www.example.com?order=dd&some=no
Все параметры - условные, просто для примера. Я юзаю коротки ключи, они хранятся в настройках объекта, чтоб было понятно пишу полностью.
Если не стирать значения, а просто поменять или добавить еще, то старые параметры выведутся как были
Допустим было
http://www.example.com?page=1&order=da&onpage=32&some=param
выводим где-то адрес в линк
echo $get->url_home()->some('no')->bar('baz');
получаем
http://www.example.com?page=1&order=da&onpage=32&some=no&bar=baz
Таким образом объект поддерживает любое количество параметров (включая массивы) и в любой момент можно поменять любой параметр, убить или добавить новый.
Затем по проверкам
if($page=$get->page){
/* Если в page что-то есть, оно будет в page, если нет, там будет null */
}
Ну и просто можно профтыкать
$get->page=$page
чтоб поменять номер страницы перед выводом.
Объект сам растеризуется по умолчанию для обычных линков.
Есть что-то похожее на js из готового и не сильно жирного?