2

我正在使用 Moovweb SDK 并使用 Tritium。我希望我的移动网站表现得像我的桌面网站。我有不同的 URL 指向我的主页。我应该使用正则表达式吗?一个共同的元素?匹配路径的最佳语法是什么?

4

1 回答 1

4

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
  }
}
于 2013-04-07T03:37:33.127 回答