Я создаю приложение SvelteKit, в котором пользователь может просматривать мультимедийные файлы на основе категорий и подкатегорий, а также иметь нумерацию страниц, чтобы предотвратить одновременное отображение слишком большого количества файлов. Иерархия маршрутизации (внутри src/routes
) раньше была такой и не имела ошибок:
browse
[category]
[page]
+page.svelte
[subcategory]
[fileName]
+page.svelte
Но затем я добавляю дополнительный маршрут:
browse
[category]
[page]
+page.svelte
[subcategory]
[fileName]
+page.svelte
[page]
+page.svelte
После добавления маршрута [page]
в [subcategory]
при попытке запустить проект я получаю следующую ошибку: The "/browse/[category]/[subcategory]/[fileName]" and "/browse/[category]/[subcategory]/[page]" routes conflict with each other
. Я попробовал закомментировать весь код внутри файлов, но возникает та же ошибка.
Почему [fileName]
и [page]
внутри [subcategory]
конфликтуют, а [subcategory]
и [page]
внутри [category]
не конфликтуют? И как я могу сделать так, чтобы первые не конфликтовали друг с другом, сохраняя при этом возможность включать в URL-адрес и подкатегорию, и номер страницы? Заранее спасибо!
Исходная настройка не конфликтует, поскольку количество предоставленных параметров позволяет определить, какой маршрут используется.
/browse/a/b | has to be in [page]
/browse/a/b/c | has to be in in [subcategory] - there is a [fileName]
Есть и другие способы включения чего-либо в URL-адрес: для чего-то вроде пейджинга вы можете использовать параметр запроса (?page=1
) вместо параметра маршрута. (Доступ к этим параметрам и управление ими осуществляется через свойство URL-адресов searchParams.)