6

我已经开始使用 clojure 进行编码, Enlive给我留下了深刻的印象。我真正喜欢它的一件事是 Enlive 使用 html-only 模板。所以模板就是一个包含html的文件,以.html结尾,就这么简单。它被解析成一个 dom 树,然后该 dom 树由 clojure/enlive 操作、组合、动态化等。html 模板文件中没有语法,一个漂亮干净的分离。

通过 javascript 完成的类似系统的另一个示例是PURE

php中有类似的东西吗?或者,一般来说,有什么方法可以做仅 html 的模板?

4

5 回答 5

4

很高兴听到 Enlive。几年来我一直在思考这个概念,并在 PHP 中编写了一些共享一些原则的东西:模板是纯 HTML,您可以通过使用 CSS 或 XPath 将内容寻址到文档中的特定节点来“填充”它们。

$t = new Template('yourfile.html');
$t->fill('#nav',$someMarkup);
$t->fill('#header',$otherMarkup);

我还尝试将一些规定放在一起,将内容分成某种“样式表”……好吧,“样式表”是错误的词。我称它们为内容寻址表(该项目称为 CAST,用于内容寻址样式模板)。CAS 看起来像您可能期望的那样:

.col #foot {
    content: 'foot';
}

#content {
    content: file_get_contents('pangolin.txt');
}

内容的值假定为 PHP 表达式。也有一些设置适用于选择器的 PHP 的规定。

运行cssfill.phptarball 中的脚本(最好的调用可能是./cssfill.php pangolin.cas pangolin.html,您可能必须在 cssfill.php 中更改 php 解释器的路径),查看输出,与输入文件进行比较。

如果这篇文章激起了你对这个想法的热情,请随时告诉我。我一直在想这是否是一个疯狂的想法,或者它是否有一个地方,如果有的话,我很乐意将它变成一个经过深思熟虑的开源项目,而不是一个随机扔到互联网上的 tarball。

于 2010-07-19T03:18:35.663 回答
2

您可以查看phptal.org。它是一个使用 HTML 标签的 PHP 模板引擎。但这不是那么快。

您还可以检查其他项目,例如twig-project.org女巫要快得多。

于 2010-07-19T15:49:36.410 回答
1

结帐PHPTAL。PHPTAL 是一个用于 PHP5 的 XML/XHTML 模板库,它提供已编译的模板和细粒度的缓存。模板是在纯 XML/HTML 标记中定义的。

<div class="item" tal:repeat="item itemsArray">
    <span tal:condition="item/hasDate" tal:replace="item/getDate"/>
    <a href="${item/getUrl}" tal:content="item/getTitle"/>
  <p tal:content="value/getContent"/>
</div>
于 2010-07-20T18:09:02.197 回答
1

有趣的开始。但令我印象深刻的是,为什么我们不能使用带有样本文本的不同模板来更改视图和元素的不同状态 - 并提取代码以创建现有模板系统或只是用内容填充它。发现工作流程感觉如此复杂和复杂——不喜欢将 html 与 php / js 混合,也不喜欢编写抽象模板系统。需要大量的大脑 - 无需简单的可视化即可进行大量交流。

于 2013-11-28T23:19:23.447 回答
0

我想Psttt!php 的模板引擎正是您要找的,它使您的 html 模板保持完整,让您可以更好地重用您的 html。

完整的源代码在这里http://github.com/givanz/psttt

于 2010-09-19T18:44:22.210 回答