生成动态HTML文件
问题描述:
我是斯卡拉新手。我有预定义的HTML文件。我想在HTML文件中插入动态内容。生成动态HTML文件
e.g.
$for(products in product)
<div>product.name</div>
<div>product.description</div>
这里products
是Scala的集合。我可以加载html文件并提供动态值(products
)。
你能否告诉我如何在Scala中做到这一点?
答
捻模板
编译,类型安全,可组合,斯卡拉HTML标签内(类似于角JS [嵌入HTML javscript])
Twirl
模板,让你写一个HTML中阶,其类型安全,被编译为函数并且可组合。
orders.scala.html
@(customer: Customer, orders: List[Order])
<h1>Welcome @customer.name!</h1>
<ul>
@for(order <- orders) {
<li>@order.title</li>
}
</ul>
没有任何库
Scala有字符串插值很好的支持,并且还提供三重引号语法来声明与协商字符,这是非常方便的字符串。你可以用这种简单的方法
case class Product(name: String)
case class Html(content: String)
def produceHtml(products: List[Product]): Html = {
Html {
products.map { product =>
s"""
|<div> ${product.name} </div>
""".stripMargin
}.mkString("\n")
}
}
感谢提供两种选择产生动态HTML。 –