Как вы создаете маршруты с необязательными параметрами в Sapper?
Допустим, у меня есть /foo
маршрут. Но иногда люди бьют /foo
с языковым параметром: /fr/foo
, И в других случаях они могут ударить по языку и стране: /ca/fr/foo
Так что мне нужна таблица маршрутизации, как
[country]/[language]/foo
[language]/foo
/foo
Это все прямо на одной странице.
Должен ли я создать дерево, как это?
src/routes
└── [country]
└── [language]
└── foo.svelte
Если это ответ, то как мне направить [language]/foo
в [country]/[language]/foo
?
3 ответа
Необязательные параметры еще не поддерживаются, но вы можете почти подделать его с помощью "маршрутов отдыха" (которые, как я только что понял, еще не документированы -) - routes/[...parts]/foo.svelte
будет оказывать foo.svelte
с page.params.parts
массив, содержащий предыдущие сегменты.
К сожалению, это не соответствует /foo
, что это, вероятно, следует. Я поднял вопрос: https://github.com/sveltejs/sapper/issues/765
В моем случае мне понадобился маршрут / панель управления / сброс / ТОКЕН / ID. Я заставил его работать со следующей структурой:
[acool@localhost cool-sapper-project]$ tree src/routes/
src/routes/
├── dashboard
│ ├── reset
│ │ └── [...parts].svelte
Вышеуказанное сделает параметры TOKEN и ID доступными в params
на вашей странице:
<script context="module">
export async function preload({ params }, session) {
console.log(JSON.stringify(params));
}
</script>
Выход:
{"parts":["2fd4e1c67a2d28fced849ee1bb76e7391b93eb12","1"]}
Удачи!
Для тех, кто ищет ответ. Теперь это поддерживается.
src/routes
└── [country]
└── [[language]]
└── foo.svelte