【发布时间】:2020-04-18 11:11:47
【问题描述】:
我目前在 sapper 中遇到了路由限制。我们需要创建一个匹配两个“slug”的路由,比如[section(foo|bar)]。这在 *nix 上运行良好,但在 Windows 上失败,因为非法的 | 字符。
在这条路线旁边,还有一条[slug] 路线在同一层,与其余路线相匹配。这是故意的,因为只有 foo 和 bar 应该以不同的方式呈现,并且它们也会有子路由。
我想到了以下方法:
- 通过检查
slug是foo还是bar来处理[slug]路由中的所有内容,并以不同的方式处理这些情况。 我宁愿不这样做,因为代码将难以阅读/维护,并且有些子路由应该只适用于foo和bar - 创建两个文件夹
foo和bar,而不是一个名为[section(foo|bar)]的文件夹。 这是不可取的,因为这意味着很多重复的代码 - 为路线添加前缀,例如。创建一个文件夹
section,其中包含一个[slug]路由。这似乎是问题最少的选项,但我更喜欢/foo作为 URL 而不是/section/foo。
还有其他可能的选择吗?也许是一种与 Windows 兼容的写作方式[section(foo|bar)]?还是一种定义路由正则表达式的方法,而不是通过文件名?
【问题讨论】: