我使用 mustache 在服务器上渲染东西,但也在客户端上。策略是我有一个单页应用程序(在服务器上用小胡子渲染),这个模板从服务器中提取片段并使用它们在客户端上渲染 json。
现在问题出在模板上。我想在服务器上呈现标签,但保留一些小胡子语法以在客户端上呈现。假设我有一个这样的模板:
<html>
<head><title>{{label.title}}</title></head>
<body>
<h1>{{name}}</h1>
<p>{{description}}</p>
</body>
</html>
服务器端渲染将填充标签,但现在它还删除了在上下文中不可见的占位符。
<html>
<head><title>Ze zjerman title</title></head>
<body>
<h1></h1>
<p></p>
</body>
</html>
有没有办法插入 Scalate 并避免这种情况?我天真地试图逃避:
templateEngine.layout(path, Map(attributes:_*).withDefault((key)=>"{{"+key+"}}"))
...但显然,一旦通过循环处理地图(例如在 TemplateEngine 第 576 行中),它将被丢弃。合适的插入点在哪里?
我还在RenderContext中找到了 noneString 和 nullString ,但我认为我不能让渲染器在那里输出一个键,因为这些变量只是字符串......
我正在使用 scalatra-scalate 2.0.2 和 scala 2.9.0-1。