ETpl默认使用HTML注释做语法声明。编写一个纯HTML的模板文件,开发者就不会丧失编辑器本身自带的语法高亮、自动补全等功能。
如果你不喜欢,或者习惯了其他模板引擎的风格,你可以定制自己的模板风格。
在编写模版时,你可以将模版划分成不同的片段,并分别为它们命名。
模版片段的划分通常是因为需要复用。如果不需要复用,可以和使用其他简单模板引擎一样的写法。
ETpl的一些命令标签支持自闭合,编写时无需编写闭合标签,能节省部分代码和时间。比较常用的,target、import、use、var在普通场景下,都无需编写闭合。
直接引用是最基本的复用方式,通过名字去使用一个存在的模板片段,一切都是静态的。
模版继承(母版)功能允许你在一开始就对多个相似的模板从“结构”的角度进行抽象。继承自一个和你具有相同结构的母版,你可以无需再编写结构骨架部分,只需要编写结构内部的内容差异部分。
如果有一个模板的大部分可以复用时,通过引用代入功能,你可以在引用时抹平差异,定制其中差异部分内容。这绝对是一个神奇的功能,当你面临结构种类数量爆炸时,引用代入提供了另一种更灵活的复用方式。
动态调用允许你在引用一个模板时,为其定制模板渲染运行时的数据。在面临多种不同的数据名称、相似的结构时,动态调用可以让你只编写一份代码,多次调用。
Filter提供了引用数据时的数据处理能力,其支持管道、参数传递。灵活的Filter能够让你保证模板渲染前的数据纯洁性,无需对Model数据进行二次加工和适配。
通过几个简单的配置设置,你可以定制自己喜欢的模板语法风格。下面的例子将ETpl定制成nunjucks的语法风格。
你可以在模板中声明数据。通常用于对数据进行处理后保存,避免多次处理,以及一些简单的场景。模板引擎的主要职责是将数据转换成视图,我们很小心的提供一个模板中简单的数据声明途径,但并不推荐你重度使用它。
Data Getter提供的动态数据功能,可以让你的数据延后到模板渲染的过程中提供。你需要根据变量名生成数据,或者从不同的数据源中获得数据时,这能给你提供便利。看看示例
除了变量,你同样可以将任意的模板文本通过过滤器进行处理。这免除了在js中通过丑陋且繁琐的字符串操作来生成大段文本用于过滤器的痛苦,让模板显得更加直观易懂
ETpl采用了主流的模板编译技术。“变量引用预提取”、“区分平台产生不同的编译产物”等优化手段,使ETpl在具有这么多动态特性时,还能做到接近极限的渲染性能。
看看ETpl的性能测试