Kzq*_*qai 6 html php clojure templating
我已经开始使用clojure进行编码了,Enlive给我留下了深刻的印象.我真正喜欢的一件事是Enlive使用仅限html的模板.所以模板是一个带有html的文件,以.html结尾,就像那样简单.它被解析成一个dom树,然后那个dom树被clojure/enlive,组合,动态等操纵.在html模板文件中没有语法,一个非常干净的分离.
通过javascript完成的类似系统的另一个例子是PURE.
在PHP中有类似的东西吗?或者,一般来说,任何方式做html-only模板?
很高兴听到 Enlive。我多年来一直在思考这个概念,并在 PHP 中编写了一些共享一些原则的东西:模板是纯 HTML,您可以通过使用 CSS 或 XPath 将内容寻址到文档中的特定节点来“填充”它们。
$t = new Template('yourfile.html');
$t->fill('#nav',$someMarkup);
$t->fill('#header',$otherMarkup);
Run Code Online (Sandbox Code Playgroud)
我还尝试将一些规定放在一起,将内容分离成某种“样式表”……好吧,“样式表”是错误的词。我将它们称为内容寻址表(该项目称为 CAST,即内容寻址样式模板)。CAS 看起来像您可能期望的那样:
.col #foot {
content: 'foot';
}
#content {
content: file_get_contents('pangolin.txt');
}
Run Code Online (Sandbox Code Playgroud)
假定 content 的值是 PHP 表达式。还有一些设置 PHP 的规定也适用于选择器。
运行cssfill.phptarball 中的脚本(最好的调用可能是./cssfill.php pangolin.cas pangolin.html,您可能必须更改 cssfill.php 中 php 解释器的路径),查看输出,与输入文件进行比较。
如果这篇文章激起了您对这个想法的热情,请随时告诉我。我一直想知道这是否是一个疯狂的想法,或者它是否有一席之地,如果确实如此,我很乐意将其变成一个经过深思熟虑发布的开源项目,而不是随机扔到互联网上的 tarball。