模板引擎如何工作?

时间:2013-06-07 10:20:14

标签: template-engine

你能解释一下模板引擎是如何工作的,例如在django中用

context = {'q' : 1, 'w' : 2, items : [3,4,5,6]}

{% for item in items %}
  <p>{{ item }}</p>
{% endfor %}

<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>

2 个答案:

答案 0 :(得分:3)

我们可以通过引入新术语“模板引擎语言”来创建抽象级别,这对于每个模板引擎都是不同的。

在运行时,在幕后,在将内容发送到浏览器之前,模板引擎的解释器按照不同的语义和语法规则(由模板引擎语言定义)遍历代码,并根据这些规则,执行不同的动作。在这里,我们可以用任何编程语言进行类比。

让我向您展示如何用PHP编写上述示例,这个时间代码将由PHP解释器解释,而不是模板引擎的解释器:

<?php

// Default data
$context = array( 'q' => 1, 'w' => 2, 'items' => array(1, 2, 3, 4) );

// Now array keys can be accessed as variables
extract($context);

foreach( $items as $item ) {
     echo '<p>' . $item . '</p>' . PHP_EOL;
}

?>

直播:http://codepad.org/mxzJcC9N

答案 1 :(得分:0)

Django中的模板引擎

模板引擎有两个阶段:

  • 解析
  • 渲染
  

解析阶段采用模板字符串并生成一些东西   可以渲染。将模板字符串视为源代码,   解析工具可以是编程语言解释器,也可以是   编程语言编译器。如果该工具是翻译,   解析产生数据结构,渲染工具将走路   通过结构并生成结果文本。 Django   模板引擎解析工具是一个解释器。否则,解析   产生一些可执行代码,渲染工具什么都不做   执行代码并生成结果。 Jinja2,Mako和   Tornado模板模块都使用编译器作为解析工具。