List Template模板引擎

联合创作 · 2023-09-29 02:46

Lite 缩写自 List Template,是一个由简单的控制指令集和一个表达式解析引擎组成的简单模板引擎。 模板语言所解析的中间格式,由数组、字符串、和整数三种数据类型组成。数组就是这里唯一的复合类型,于是,我采用 List Template 来命名这个模板引擎。List 和Template 各取两个首字母,组成 Lite 这个单词。

用户不能直接编写控制指令,如同 java 程序员不能直接编写字节码一样,Lite 需要一种真正的源代码格式。理论上,通过这些控制指令和自定义表达式函数,我们可以支持任何模板语法翻译为Lite能解释的中间代码。

如 CLR 需要 C#,C++.net,java byte code 需要 Java 语法; Lite 提供一种 XML 源代码语法,作为 Lite 的默认源代码格式。

Lite 的运行效率,是非常出众的,高于 Velocity 和 FreeMarker 一半以上。  但是对于一些表达式的计算,因为 JSEL 脚本和 JavaScript 规则的兼容性要求,以及弱类型自动转换的特征,性能不及强类型的 velocity。介于 Velocity 和 FreeMarker 之间。

js 版本运行时比 jst 快大约两倍,如果算 上编译时间(lite 不在运行时编译),不在一个数量级上,没有比较。

python 版本比 django 模板快四倍左右!

php 版本的性能较差,估计主要事 php 函数调用开销的问题, 相比 smarty 这个编译成最终 php 的模板实现来说,在 asciitable 打印测试中,单进程内一次运行要慢 smarty 3.5倍(通常 web 页面的 渲染模式),如果单进程重复运行1000次(现实环境中不太可能发生),可能是因为 php 文件的解析缓存,要慢 smarty 9倍(查看详细数据),而且如果 php 使用编译缓存加速,这个差距还会进一步加大。以后考虑将采用类似 lite4js 那 样编译成最终代码的方式,或者直接编写 php 扩展。

浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报