我正在通过推特浏览Hogan.js。
http://twitter.github.com/hogan.js/
他们谈到能够通过服务器预编译模板,我理解这可能是一个优势。
目前每次渲染模板时,我都会在AJAX命中服务器后执行以下操作以获取数据:
var template = Hogan.compile($('#seasonsTmpl').html());
$('#main').html(template.render(data));
给出以下模板:
<script type="text/html" id="seasonsTmpl">
<ul>
{{#season}}
<li>{{.}}</li>
{{/season}}
</ul>
</script>
如何使用ASP.MVC后端“预编译”服务器端?这是不可能的,因为它似乎集中在使用Node.js
?
答案 0 :(得分:1)
您有正确的想法来优化模板。有两个选项,选择可能取决于您是要在客户端还是服务器端呈现模板。
如果要在客户端呈现它们,可以使用Hogan.js进行真正的预编译。是的,这不能在.NET上运行,但我认为您在可能的情况下进行预编译时会误解。您可以在构建过程中预先编译模板,而不是期望它发生在每个Web请求或页面加载上。您将需要安装node和npm进行设置,但您只需要在自己的机器上本地运行它,或者如果您使用它,则需要在构建盒中运行。每当更新模板时,都会再次运行Hogan来更新输出文件。编译后的输出将是一个JavaScript文件,其中包含针对以后使用而优化的函数。这些函数包括模板字符串,以及将数据呈现为Mustache的逻辑。然后,您可以像其他任何JavaScript包含一样包含输出文件,或者如果您这样做,可以将其与其他来源一起包括在内。
第二个选项是渲染模板服务器端。这与预编译不同,服务器将为每个Web请求再次编译和呈现模板。离开Hogan.js,看看像Nustache这样的.NET替代品。关于Mustache的好处是它有一个规范,并已被移植到几种服务器端语言。
这些选项在渲染发生的位置方面存在根本差异。您甚至可能希望在某些情况下使用这两种方法,例如,如果您想使用Nustache渲染服务器端的初始页面,但是必须使用通过Hogan预编译的模板在浏览器中呈现动态元素。
更多信息: Nustache on Github
我希望你觉得这很有用!