【问题标题】:Runtime script evaluation in Grails - Best PracticseGrails 中的运行时脚本评估 - 最佳实践
【发布时间】:2012-07-30 21:48:36
【问题描述】:

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

我们现在正在计划一项功能,允许管理员编辑和自定义这些模板。因此,计划是使用 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. 上述代码最大的瓶颈是什么?那个工程?评价?

谢谢

【问题讨论】:

    标签: grails groovy groovyshell


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。有任何文件吗?我在用户指南中找不到它。
    • 不,真的没有。但这很简单。几乎与使用 GroovyShell 相同。只需查看 API,如果您进行 Google 搜索,就会发现有关示例。
    • 再次感谢。我最终使用了 SimpleTemplateEngine,因为它拥有我需要的一切...... copper
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2017-12-21
      • 2021-12-14
      • 2015-08-24
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多