阅读更多

全面超越 Velocity 的全新一代 Java 模板引擎 jetbrick-template 1.1.0 正式版发布。新版支持自定义标签 #tag,宏定义 #macro,layout 等功能。

 

完善的中文在线文档:http://subchen.github.io/jetbrick-template/
 

Version 1.1.0 (2013-12-02)

 


jetbrick-template 是一个新一代 Java 模板引擎,具有高性能和高扩展性。 适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用。

 

  • 支持类似与 Velocity 的多种指令
  • 支持静态编译
  • 支持编译缓存
  • 支持热加载
  • 支持类型推导
  • 支持泛型
  • 支持可变参数方法调用
  • 支持方法重载
  • 支持类似于 Groovy 的方法扩展
  • 支持函数扩展
  • 支持自定义标签 #tag
  • 支持宏定义 #macro
  • 支持布局 Layout
3
0
评论 共 11 条 请登录后发表评论
11 楼 所谓码农 2013-12-05 22:42
粗略看了下,感觉还可以,个人觉得一个项目的好坏与文档质量有着莫大的关系。希望作者再接再厉,加油!!
10 楼 bluerose 2013-12-05 20:19
jetbrick webmvc?啥东西 没看到呢
9 楼 pn2008 2013-12-04 16:31
   
8 楼 subchen 2013-12-04 14:52
janrn 写道
引用
4. 如果扩展方法被删除,但是如果模板没有对应修改。那么默认情况下(compile.always=true), 会进行编译,然后出现 SyntaxErrorException, 如果 compile.always=false 的情况下,运行时会出现 NoSuchMethodException。


这一点能做容错处理吗?在这种情况下,页面上不要进入出错页面,而输出空白,后台日志中打出Error异常日志。


这个不是由模板引擎处理的,而是由 Web 框架处理的,比如自定义 500 页面,在 500 页面中判断是否错误来自于模板引擎,如果是,则输出空页面,把错误输出到日志里,否则正常输出错误。
7 楼 janrn 2013-12-04 13:00
引用
4. 如果扩展方法被删除,但是如果模板没有对应修改。那么默认情况下(compile.always=true), 会进行编译,然后出现 SyntaxErrorException, 如果 compile.always=false 的情况下,运行时会出现 NoSuchMethodException。


这一点能做容错处理吗?在这种情况下,页面上不要进入出错页面,而输出空白,后台日志中打出Error异常日志。
6 楼 subchen 2013-12-04 09:11
如果想要在项目中,可以在线修改或制作模板,并实时生效,完全是可行的。

你需要预定义一些

1. #include 子模板,
2. 默认的常用变量
3. 一些的扩展方法和函数 
4. 自定义标签 Tag

这样用户就可以制作出他想要的模板效果了。

请启用 template.reloadable 来支持模板的热部署
5 楼 subchen 2013-12-04 09:07
@janrn

1. 一个页面上,多次调用到相同的函数并不会被缓存,你可以实现缓存 Tag(文档中有范例), 页面上的重复内容可以用 #macro 或者 #include 实现
2. 各种指令都支持嵌套
3. 考虑在下一个主要版本中增加anontation 注解, 来自动获取所有的扩展方法/函数/自定义标签。减少配置
4. 如果扩展方法被删除,但是如果模板没有对应修改。那么默认情况下(compile.always=true), 会进行编译,然后出现 SyntaxErrorException, 如果 compile.always=false 的情况下,运行时会出现 NoSuchMethodException。

后台会有详细的错误日志。 正确情况下,前台页面应该会显示500错误(同时包含模板的详细错误信息)
4 楼 janrn 2013-12-03 20:48
再问一下,
如果一个扩展方法,在后期开发过程中,被删掉,而模板里忘记修改了,这时页面会怎么样,是整页打不开,还是页面上显示一段错误,还是页面上这一段显示空白,后台Logs上会不会打出异常日志。
Freemarker这点很讨厌,默认下一出点错,整页可能就直接进入出错页面(当然,也可以修改默认不异常)
3 楼 janrn 2013-12-03 20:43
另外,注册Tags、方法、扩展,函数扩展这些过程能不能简化一点,比如注解方式,或自动扫描,甚至继承接口也可以,总之,我不想每增加一个就要修改一下配置文件,特别是对于我们多子工程的项目来说,这个东西最好能独立点,自动化一点。
2 楼 janrn 2013-12-03 20:39
看起来非常不错,很感兴趣,特别是支持扩展方法,以及支持访问静态类,比Velocity要强大。
如果想要在项目中,可以在线修改或制作模板,并实时生效,另外想实现以下功能,你看可行吗:
如CMS首页,有各种内容,我想做成各个TAGS,供做模板的人使用,但是,有时,不同的区块中又会有内容交叉或者重复,或者在一个页面上,多次调用到相同的函数及TASS(参数也完全相同的情况),系统能否自动为其缓存并直接返回,以提高效率。
另外,在TAGS或函数里,是否支持嵌套,比如tags1(条件。。。)查询的是文章列表,里面嵌套一个tags2(条件。。。)查询文章评论,然后就可以输出文件列表,以及每个列表上最近几条评论。
1 楼 git_for_java 2013-12-03 09:39
自定义标签 #tag,宏定义 #macro,layout 等功能

非常实用的功能! 做 layout, 页面 cache 方便了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics