1

在我们的应用程序中,系统正在发送大量电子邮件。对于所有具有不同上下文变量填充动态数据的用户,这些电子邮件的格式相同。

我们现在正在计划一项功能,允许管理员编辑和自定义这些模板。因此,计划是使用 groovy shell 在运行时评估模板,例如

Binding binding = new Binding();
binding.setVariable("model", [var1: "First Name", var2: "Last Name"])
GroovyShell shell = new GroovyShell(binding);

Object email = shell.evaluate('return "<html><title>Test Shell</title><body>${model.var1} ${model.var2}</body></html>";');

这似乎对我们很有效。我的问题是:

  1. GroovyShell 是首选引擎还是 Rhino 或其他更好?
  2. 是否有任何性能问题或内存问题需要注意?我们可以优化的任何低悬的果实,即外壳或绑定可以重复使用
  3. 上面代码中最大的瓶颈是什么?那个工程?评价?

谢谢

4

2 回答 2

0

我会推荐使用 GroovyPagesTemplateEngine 之类的东西,因为它不仅仅是 Groovy eval,而且你也可以使用所有 grails taglib 的优点。我将 GroovyPagesTemplateEngine 和 SimpleTemplateEngine 用于您的确切场景。

SimpleTemplateEngine 稍微快一些,所以如果我不需要比简单绑定更多的东西,我会使用它。当我需要处理逻辑和控制结构时,我使用 GroovyPagesTemplateEngine。

于 2012-07-30T23:30:23.303 回答
0

对于 grails,请改用页面渲染 api。http://grails.org/doc/2.0.x/guide/introduction.html#whatsNew

于 2012-07-31T16:53:40.697 回答