此页面呈现技术是否有名称?

时间:2011-05-03 19:29:10

标签: php html perl templates

我正在使用动态HTML模板系统(如PHP),我想知道这个问题/解决方案是否有名称或已在某处完成。

问题涉及动态控制内容,但是在内容和代码交织在一起之后。想想两个页面,一个使用很多花哨的样式和框架,另一个不使用,但共享相同的“外包装”模板。

<!DOCTYPE html>
<html>

<head>
<title>Both pages share a static title</title>
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
<script src="..." type="text/javascript">
</head>

<body>
<!-- only this part is dynamic, the top and bottom parts are shared among all pages -->

...
</body>
</html>

计划是在标题所在的位置留下一个标记,修改正文中的占位符对象,然后在页面完成渲染之后(但在发送到客户端之前)替换标记所在的占位符内容。

<!DOCTYPE html>
<html>

<head>
__HEAD__
</head>

<body>
<?
    $head->title('my very own title');
    $head->script('jquery 1.5.2');      
?>

...
</body>
</html>

__HEAD__令牌将扩展为实际的HTML。

<!DOCTYPE html>
<html>

<head>
<title>my very own title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript">
</head>

<body>
...
</body>
</html>

有没有人见过这个?

编辑:这里有人在谈论同样的问题,但解决方案略有不同。

http://iamcam.wordpress.com/2007/07/15/smarty-assigning-variables-to-the-header-from-the-body/

编辑^ 2:下面接受的答案是模板引擎所做的事情,这是真的。这种特殊情况的困难在于执行和模板引擎交织在一起(如旧式PHP),因此很难看到描述。使用适当的模板轻松解决。

4 个答案:

答案 0 :(得分:1)

这称为template engine。除了简单地使用PHP作为模板引擎之外,还提供了其他解决方案,例如Smarty。此外,许多框架(如CakePHP和symfony)将其代码分离为布局和视图,以便提供此功能。

答案 1 :(得分:1)

perl最大的例子是Template Toolkit。对于其他语言,您有ASP,JSP,EJS,Jade,胡须等等。

答案 2 :(得分:1)

依赖注入

OP对原始问题不清楚。要呈现的页面主体应该已隔离到单独的文件中。这个正文文件应该最终说明HTML标题中的内容,该标题由不同的文件控制。

所以是的,输出特定脚本的实际功能可以由花哨的模板引擎提供,但是这里表达的更重要的想法是依赖注入,其中头文件不需要知道在某个遥远的地方和时间确定的依赖关系。

答案 3 :(得分:0)

使用Smarty V3继承,您可以执行此操作。 看看:http://www.smarty.net/inheritance