第 5 章 mint模板引擎

目录

5.1. 简介
5.1.1. 何为mint?
5.1.2. 何为编译型?
5.1.3. 为什么使用mint?
5.2. 限制
5.3. 配置
5.4. HelloWorld
5.4.1. 示例分析
5.5. 组件
5.5.1. 组件定义
5.5.2. 内置的组件
5.6. 修饰
5.6.1. 使用修饰(modifer)
5.6.2. 内置的修饰
5.7. 添加自己的组件和修饰
5.7.1. 新建组件
5.7.2. 新建修饰
5.8. 常见错误
5.8.1. 忘记写$或@
5.8.2. 错误的赋值

5.1. 简介

mint是一个编译型的模板引擎,是I-F中重要的核心模块。

5.1.1. 何为mint?

翻开英文辞典,会发现mint有很多解释,这里我们只取它的“薄荷”含义,希望在枯燥的模板使用过程中,mint能带给你薄荷似的清凉。

图 5.1. 薄荷

薄荷

5.1.2. 何为编译型?

不同的人们对“编译”有着不同的理解,在PHP模板引擎世界里,我们常把那些在第一次运行时就把模板分析结果存储、并在以后无需再次分析就可以重用的模板引擎称之为“编译型”模板引擎。典型地,PHPLib Template就不是编译型的,因为我们每次调用模板的时候,都需要动态地分析模板并把其中的块(block)和变量(var)替换掉,而Smarty就是编译型的,它只在第一次运行时就可以将模板分析为一组PHP程序文件,以后再调用模板时,它会自动执行编译后的PHP程序文件,而不是再次分析模板。

编译型模板引擎由于避免了多次重复分析模板,所以相对于非编译型的要快很多,而且由于运行时不需要大量替换,也节省了系统资源(CPU和IO)。

mint也是编译型的,即是说它也是在第一次运行后,就生成和模板对应的编译后的PHP程序,以后无需再次分析模板结构,所以它的速度是相当快的。

5.1.3. 为什么使用mint?

mint有以下优点

  1. 它是编译型的,速度相当快

  2. 它的容错能力强,相对于Smarty来说,mint有更强大的语法分析功能,所以总能准确的报告错误信息以及错误位置

  3. 扩展性强,任何人都可以很方便、简单地添加新的组件和修饰

  4. 清晰而易读,mint使用节点属性定义组件,而不是写入逻辑代码,如在Smarty中可能是

    <html>
        <head>
            <title>hello,world</title>
        </head>
        <body>
            hello,world! model is
            <ul>
                {foreach key=k item=v from=$model}
                <li>key is {$k} and value is {$v}</li>
                {/foreach}

            </ul>
        </body>
    </html>

    而在mint里就是

    <html>
        <head>
            <title>hello,world</title>
        </head>
        <body>
            hello,world! model is
            <ul com="@foreach" x-data-set="$model" x-key="$k" x-value="$v">
                <li>key is {$k} and value is {$v}</li>
            </ul>

        </body>
    </html>

    相对于Smarty,mint的语法更加自然,至少模板编辑人员(designer)会认同这一点。在mint设计之处,我们就认定要在模板里限制程序员写与逻辑相关的代码,保证模板清晰而易读。

  5. 易于配置,目前需要配置的只有简单的几个选项。