Как вы создаете маршруты с необязательными параметрами в 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
Другие вопросы по тегам