【问题标题】:Template Toolkit: Extracting a part of a template模板工具包:提取模板的一部分
【发布时间】:2017-08-01 04:42:06
【问题描述】:

我被分配了使用 Perl 模板工具包重写我们自制模板的任务。

我们的模板可以提取模板的一个片段(然后从中生成 HTML),而不是使用整个模板。

模板工具包怎么做?

我提出的最佳解决方案如下:

让我们有一个模板x.html 和片段A

片段应该被提取到新文件中。 (为了保持一致,我将它命名为x/A.html。)在原始模板x.html 中,它应该替换为[% INCLUDE 'x/A.html' %]。所以我可以使用整个模板x.html 或其片段x/A.html。可能我们可能有几个级别的包容性,比如x/A/B.html

还有其他方法吗? (我不喜欢像上面描述的那样把它分成子目录,但还没有想出更好的解决方案。)

【问题讨论】:

  • 把重复的东西放到更小的子集中。在这方面,模板就像函数。我不会根据(第一次)使用它们的位置将它们放入文件夹中,而是根据它们的作用或用途将它们放入文件夹中。例如,product 模板可用于购物车、详细信息页面和时事通讯中。它不应该是 cart 的子目录,因为它最初出现在那个位置。
  • @simbabque 你的回答(嗯,评论)不是我的问题。我没有给出重构模板及其部分的任务,而只是将遗留模板“语言”“翻译”成现代模板工具包。这是我被分配的唯一任务。我现在不打算做更多的重组工作

标签: perl template-toolkit


【解决方案1】:

您是在问是否有更好的方法从父模板中提取片段?

(答案是:不,这可能是最好的方法。)

或者你问有没有更好的方法来组织提取的片段?

(答案是:没有真正的最佳答案,每个地方都会有自己的风格 - 选择任何约定都不会错得太远。)

我见过的最常见的命名约定是子目录x/A.html 和前缀x_A.html。无论您是使用 x 的父模板的名称,还是选择按照 simbabque 建议的那样按功能分组,这都是另外一个口​​味问题:按功能分组在更大和更复杂的布局上可以更好地扩展,在这些布局中您可以大量重用组件,但是在很少或没有组件重用的较小用例中,按用例分组在概念上更简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-10
    • 2014-12-04
    • 2011-01-20
    • 2012-07-22
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多