Delphi是否有类似于Velocity或Freemarker的模板引擎?

5
对于Web应用程序来说,如果Delphi对象的属性和方法能够与HTML代码“连接”起来将会很有帮助。
这可以在HTML响应构建阶段和请求处理阶段中以多种方式使用:
- 访问服务器端对象属性值以在HTML代码中输出它 - 将服务器端对象属性绑定到HTML表单输入字段,使得Web应用程序发送带有当前值的表单HTML,并在客户端提交表单时将属性设置为输入的值 - 将HTML表单按钮绑定到服务器端对象方法,当客户端提交表单时将执行该方法
我没有找到一个原生的Delphi库,可以更容易地添加这样的HTML到Delphi对象绑定中。
我的问题是:
是否有一个脚本代码生成的模板引擎,例如Apache VelocityFreemarker(请参见下面的示例),我可以在Delphi应用程序中使用?(不是在IDE中 - 我不是在寻找基于OTA的解决方案,或者Delphi代码模板)
模板引擎会将Delphi对象绑定到模板上,并替换脚本变量,根据对象中的值执行迭代/条件。模板可以嵌套(调用其他模板)。
典型用例是动态生成HTML代码,但也适用于Delphi代码生成器。
Velocity示例:
<HTML>
<BODY>
Hello $customer.Name!
<table>
#foreach( $mud in $mudsOnSpecial )
   #if ( $customer.hasPurchased($mud) )
      <tr>
        <td>
          $flogger.getPromo( $mud )
        </td>
      </tr>
   #end
#end
</table>

Freemarker示例:

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <p>Our latest product:
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>  

其他类似我所寻找的模板引擎有Visual Studio的T4代码生成Smarty


2
您可以查看我们的Mustache无逻辑模板系统,它与我们的其他开源库一起提供(是mORMot的一部分,但也可单独使用)。Mustache是一个很棒的模板引擎。 - Arnaud Bouchez
您可能会对 https://stackoverflow.com/a/71780444/5781320 感兴趣。 - user5781320
2个回答

2

1

谢谢提供链接!Lua是一种脚本引擎,我该如何使用它来创建和运行类似于我问题中示例HTML模板的东西? - mjn
我自己没有使用过它,但示例展示了我认为你想要的东西。所有代码都可以从Google Code获取,因此您应该下载并开始挖掘,看看是否有可能重用其中的一些代码或学习一些内容以制作自己的解决方案。 - Vegar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接