【问题标题】:How does templating engine work?模板引擎如何工作?
【发布时间】:2016-11-21 23:22:27
【问题描述】:

您能否解释一下模板引擎的工作原理,例如在 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>

【问题讨论】:

    标签: template-engine


    【解决方案1】:

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

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

    让我告诉你如何用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

    【讨论】:

      【解决方案2】:

      Django 中的模板引擎

      模板引擎有两个阶段:

      • 正在解析
      • 渲染

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-29
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多