如何在Sapper中使用可选参数创建路由?

时间:2019-06-01 00:46:17

标签: svelte 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

我不see any optional params in the docs

2 个答案:

答案 0 :(得分:1)

尚不支持可选参数,但您可以几乎使用“剩余路线”(我刚刚意识到尚未记录?‍♂️)对其进行伪造— {{1} }会使用包含前面分段的routes/[...parts]/foo.svelte数组来渲染foo.svelte

不幸的是,这与page.params.parts不匹配,可以说应该如此。我提出了一个问题:https://github.com/sveltejs/sapper/issues/765

答案 1 :(得分:1)

就我而言,我需要/ dashboard / reset / TOKEN / ID路线。我使它具有以下结构:

[acool@localhost cool-sapper-project]$ tree src/routes/
src/routes/
├── dashboard
│   ├── reset
│   │   └── [...parts].svelte

以上内容将在您页面的params中提供令牌和ID参数:

<script context="module">
 export async function preload({ params }, session) {
 console.log(JSON.stringify(params));
}
</script>

输出:

{"parts":["2fd4e1c67a2d28fced849ee1bb76e7391b93eb12","1"]}

祝你好运!