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