什么是模板语言?

47

我在某处阅读到PHP是一种模板语言。什么是模板语言?PHP是如何成为模板语言的?还有哪些其他的模板语言?


2
请尝试访问以下链接:http://en.wikipedia.org/wiki/Template_engine_(web) - hummingBird
该术语基本上定义了使用范围。模板语言具有介于(完整的)编程语言和宏(扩展)语言之间的属性。 - mario
4个回答

32

模板语言背后的前提是该语言被“嵌入”到某些其他主文档中。具体来说,在您的平均文档上,文档的总大小大多是文档源而不是模板语言。

考虑两个松散的例子:

print "This is a simple document. It has three lines."
print "On the second line is my name: " + firstName
print "This is the third line."
VS
This is a simple document. It has three lines.
On the second line is my name: $firstName
This is the third line.

在第一个示例中,该语言将文档文本包装起来。而在第二个示例中,文档文本是最突出的部分,只有少量代码。

一些模板语言是完整的通用编程语言,例如PHP、ASP.NET和Java的JSP。而其他的则更加受限,专门为模板设计,例如Velocity和FreeMarker(它们都是Java的工具)。

许多文字处理软件,如Microsoft Word,都具备自己的模板功能,通常称为“邮件合并”。


为什么"This"和"On"是蓝色的?就像你第二个例子中每个句子的第一个字母一样,是蓝色的。 - barlop
1
因为系统认为它是源代码并试图对其进行着色。 - Will Hartung

16

模板语言是一种允许定义占位符的语言,后续用于实现设计。现代的模板语言不仅支持占位符,还支持循环和条件语句,这些通常对于设计网页非常必要。有些甚至支持更高级但仍然有用的技术,如模板继承、宏和沙盒。

关于PHP:由于PHP本身可以嵌入到HTML中,因此可以用作模板语言。另一方面,PHP相当冗长,特别是如果未启用短标签。

一个快速和功能丰富的模板引擎是Twig。我建议使用它而不是smarty。它提供了更多的功能(最重要的是模板继承),并且速度更快。


7

PHP并不一定是一个模板语言,但由于其解释方式,它可以在某种程度上通过这个测试。

当读取PHP文件时,只有PHP块标签内的代码(<?php?>)被查看,其余部分则被传递到输出。因此,.html文件可以被PHP解释器处理,而什么也不会发生,HTML将被输出。

如果HTML文件的某些区域具有PHP标记和代码,则会被解释,并且可能在这些位置输出一些数据。这可以被认为是一个模板。通常是具有输出层的想法,然后附带动态内容。您可以拥有一个产品页面模板,然后根据某些输入变量,仅将单个产品的详细信息/图像等填充到模板中。

对于PHP,实际上有模板引擎(例如Smarty..http://www.smarty.net/),您可以查看一下。

我从来没有成为他们的粉丝,但很多人都很成功。


0

1
一个链接并不是一个答案。更详细地解释一下这是什么以及它如何回答原始问题会更有帮助。 - Lou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接