我正在使用 Moovweb SDK 并使用 Tritium。我希望我的移动网站表现得像我的桌面网站。我有不同的 URL 指向我的主页。我应该使用正则表达式吗?一个共同的元素?匹配路径的最佳语法是什么?
1 回答
scripts 目录中的 mappings.ts 文件是匹配特定页面的位置。该文件在 html.ts 中导入,并允许我们说“当某个页面匹配时,进行以下转换”。
大多数项目已经生成了一个映射文件。一个简单的布局将是这样的:
match($path) {
with(/home/) {
log("--> Importing pages/homes.ts in mappings.ts")
@import pages/home.ts
}
}
每次开始在新页面上工作时,都需要设置新的“地图”。
第一:匹配唯一路径
上面的氚匹配主页的路径。路径是域之后的 URL 位。例如,在 www.example.com/search/item 中,“www.example.com”是域,“search/item”是路径。
< >/home/<
> 用正则表达式指定“home”部分。如有必要,您还可以使用纯字符串:
with("home") 如果 Tritium 将路径与匹配器匹配,它将导入主页。
网站的主页实际上并不包含 home 这个词,这可能是真的。大多数主页是没有任何匹配器的 URL。更好的字符串匹配器可能是:
match($path) {
with ("/")
}
或者,使用正则表达式:
with(/index|^\/$/) {
如您所见,>with()<
映射文件的 < > 函数是 Regex 知识真正派上用场的地方。查看我们关于正则表达式的简短指南。有时会更简单,比如< >(/search/)<
>。
请记住尽可能提供 URL 最独特的方面。如果两个 < >with()<
> 函数匹配同一个 URL,则将使用映射文件中第一个出现的那个。如果您无法为不同的页面类型找到唯一的 URL 匹配器,则可能必须通过其他方式进行匹配。
为什么使用正则表达式?
使用字符串而不是正则表达式匹配器似乎更容易。但是,正则表达式在匹配哪些 URL 方面提供了更大的灵活性。
例如,网站可以在其产品页面 URL 中使用一串数字。使用普通的字符串匹配器是不切实际的——您必须列出网站上所有项目的所有可能数字。更简单的方法是使用正则表达式来表示:“如果有 5 位数字的字符串,请继续!” (匹配5位数字的代码:< >/\d{5}/<
>。)
第二:记录比赛
匹配特定路径时,您还应该使用 < >log()<
> 语句,以便准确了解导入的内容。日志语句将打印在命令行窗口中,因此您可以查看您的正则表达式是否准确匹配您的路径。
match($path) {
with(/index|^\/$/) {
log("--> importing pages/home.ts in mappings.ts")
}
}
三:导入文件
最后,使用 < >@import<
> 函数来包含特定于页面的氚文件。
match($path) {
with(/index|^\/$/) {
log("--> importing pages/home.ts in mappings.ts")
@import pages/home.ts
}
}