无独有偶,另一个采用原生js语法的js template工具EJS
EJS开源主页:
http://code.google.com/p/embeddedjavascript/
?
今天刚刚看到EJS
,嵌入javascript模板引擎,顺便介绍一下
EJS 这个项目2007年就开始了。
粗略的看了一下,大概有两方面和jCT采取的策略是一样的:
- 采用原生javascript语法,不再对js语句进行包装
- 也把语句标记和取值表达式标记分开定义
还有几点好像也一样(由于是粗看,不一定准确)
- 也分准备模板对象数据和实例编译(他叫rander渲染)
- ejs也可以自定义语法标记
不同的地方就多了,最主要的就是
- 符号选择上jCT首选注释<!---语句-->和+-取值-+,ejs首选是<%语句%>和<%=取值%>
- 在输出上jCT采用数组做cache,ejs直接用字符串相加
- ejs直接提供了简单的DOM渲染代码,update(通过Element ID),甚至ajax数据的获取。而jCT把这些都交给了用户了,并且jCT永远也不会这样做,因为jCT认为这些有太多的框架代码可以,jCT不应该重复这个劳动
- jCT支持的子模板,扩展,自动运行,递归调用这些特性,ejs都没有
- ejs也是用正则表达式处理模板的,
jCT直接用字符串函数,正则要慢1倍以上,貌似只有jCT这样干
对 javascript template 感兴趣的朋友不妨也看看ejs,ejs的代码还是很容易看懂的,至少比JST要清晰多了