论坛首页 Java企业应用论坛

简单模版引擎eastm发布

浏览 9211 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-06-22  
最新的eastm可访问 https://eastm.dev.java.net/
现在已做进了webwork插件及用例,计划加入功能有:
include静态模版(已完成),日期数字格式化(已完成),国际化等



eastm是一个轻量级的简单模版引擎,用于生成动态的文本,比如html网页或xml流。相对velocity等模版,eastm将页面的所有运算都剔除,并使用html/xml注释作为标签。保持页面的干净。其中借鉴了一些其它的简单模版如JDynamiTe,fastm等的理念。eastm将在节省后台java代码和增强页面展示能力方面做一些努力。


Eastm is a ligth easy template engine for generate dynamic html/xml pages.
Different from velocity and freeMarker,eastm remove all view logic from page into java class.
This make pages simple and easy to maintain;on the other hand,java is good at doing logic.
Eastm use some template engine like "php template","fastm","JDynamiTe" for reference,and try to make development easier and efficiency.
   发表时间:2005-06-22  
不错。几点改进建议。

1. in the PartTextEL.java

value = PropertyUtils.getProperty(bean,varref.substring(dot+1,varref.length()));

现在只支持一级属性,不能支持OGNL那样的多级属性。
要做到这一点很容易,一个简单的递归就够了。

2.
public IETemplate parse(BufferedReader reader) throws IOException{
StringBuffer sb = new StringBuffer();
String line = null;
while( (line = reader.readLine() ) != null ){
sb.append(line+"\r\n");
}
return parse( sb.toString() );
}

庄子的fastm+也是这种做法。这样虽然会给解析带来简单,但是当html template文件很大的时候,会带来空间问题。
当然,一般来说,解析结果会缓存起来,只需要解析一次。
0 请登录后投票
   发表时间:2005-06-22  
buaawhl 写道
不错。几点改进建议。

1. in the PartTextEL.java

value = PropertyUtils.getProperty(bean,varref.substring(dot+1,varref.length()));

现在只支持一级属性,不能支持OGNL那样的多级属性。
要做到这一点很容易,一个简单的递归就够了。

2.
public IETemplate parse(BufferedReader reader) throws IOException{
StringBuffer sb = new StringBuffer();
String line = null;
while( (line = reader.readLine() ) != null ){
sb.append(line+"\r\n");
}
return parse( sb.toString() );
}

庄子的fastm+也是这种做法。这样虽然会给解析带来简单,但是当html template文件很大的时候,会带来空间问题。
当然,一般来说,解析结果会缓存起来,只需要解析一次。


呵呵,感谢关注。其实里面很多实现也借用了fastm做法。
1.PropertyUtils.getProperty是apache的实现,好像支持递归的吧,而且还支持访问List,Array的索引访问等。这个我会测试下的;
2.我也觉得不是问题,毕竟缓存的话只解析一次。
0 请登录后投票
   发表时间:2005-06-25  
经测试,由于使用apache的PropertyUtils,eastm目前的el表达式可以递归的访问属性,及用索引方式访问list中的对象。
0 请登录后投票
   发表时间:2005-06-26  
dhj1 写道
搞一下压力测试


我现在更注重功能方面,性能方面比如模版缓存等还没做上,
问一下,怎么做压力测试? 您能给做一下么:oops:
0 请登录后投票
   发表时间:2005-06-26  
就是这么说把,如果你对一样东西的功能没兴趣,你何必在乎它的性能呢?
如果eastm真能让开发有新的好的体验,那时再考虑性能优化压力测试什么的比较合适。
eastm目前阶段还只是对简单模版理念给出了另一种思路和一个可运行的实现,无论功能性能离完善还有距离,甚至没人有兴趣的话就这么搁置了,我自己开发自己用还不行么。
我觉得能起到抛砖引玉的效果最好,比如希望能和fastm一起提高;或者更多有兴趣的人参与进来,优化它,测试它,讨论它,而不是什么时候有什么功能告诉我,你今天做下什么,明天做个什么。
对eastm我有自己的计划,时间也很有限,谢谢。
0 请登录后投票
   发表时间:2005-07-08  
include如何实现?
0 请登录后投票
   发表时间:2005-07-09  
include我觉得都不属于模版解析器的一块,解析器只对一个完整的模版String进行解析,所谓完整的模版String,就是已进行了先期include预处理而形成的String,没有了include标记。

况且include需求在web应用和在file system中本就不同,比如:include file:/test/test.html,这样的写法,在web应用就是认为webapp目录是根,在fileSystem则不是。所以对include的支持,我打算在类似ETemplateWebBuilder或ETemplateFileBuilder这样的实现中加入,在模版被解析前,先用builder得到一个干净的没有include标记的模版。
(我认为include的模版用相对路径会有更好的效果,定义多套模版时会很方便)

国际化的做法也和include类似,都不是模版解析器要做的事,在对完整的模版解析之前,国际化和include都需要都预处理好了。

这样做的好处是,eastm解析引擎不用做任何修改,而且甚至用户可以根据需要做自己的include和国际化实现。只要他保证提交给解析器的是个合法完整的模版就行了。

另:
现在的数据格式化已做上去了,配置一下就可以方便的指定自己的格式化函数。比如${date1?date},这是模仿freemarker的做法,date1是数据,date是格式化函数。
0 请登录后投票
   发表时间:2005-07-10  
加精华啦,感谢斑竹:)
0 请登录后投票
   发表时间:2005-07-13  
web include  (OK)
加入include静态file支持(支持相对路径和绝对路径)(已完成web应用的include支持)
如下除最后一项为绝对路径外,其他都是相对路径
$include{include.html}
$include{./include.html}
$include{../test/include.html}
$include{/test/include.html}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics