预编译Hogan.js模板服务器端ASP.NET MVC

时间:2013-01-08 10:03:06

标签: asp.net-mvc template-engine hogan.js

我正在通过推特浏览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

1 个答案:

答案 0 :(得分:1)

您有正确的想法来优化模板。有两个选项,选择可能取决于您是要在客户端还是服务器端呈现模板。

如果要在客户端呈现它们,可以使用Hogan.js进行真正的预编译。是的,这不能在.NET上运行,但我认为您在可能的情况下进行预编译时会误解。您可以在构建过程中预先编译模板,而不是期望它发生在每个Web请求或页面加载上。您需要安装node和npm进行设置,但您只需要在自己的机器上本地运行它,或者如果您使用它,则需要在构建盒中运行。每当更新模板时,都会再次运行Hogan来更新输出文件。编译后的输出将是一个JavaScript文件,其中包含针对以后使用而优化的函数。这些函数包括模板字符串,以及将数据呈现为Mustache的逻辑。然后,您可以像其他任何JavaScript包含一样包含输出文件,或者如果您这样做,可以将其与其他来源一起包括在内。

第二个选项是渲染模板服务器端。这与预编译不同,服务器将为每个Web请求再次编译和呈现模板。离开Hogan.js,看看像Nustache这样的.NET替代品。关于Mustache的好处是它有一个规范,并已被移植到几种服务器端语言。

这些选项在渲染发生的位置方面存在根本差异。您甚至可能希望在某些情况下使用这两种方法,例如,如果您想使用Nustache渲染服务器端的初始页面,但是必须使用通过Hogan预编译的模板在浏览器中呈现动态元素。

更多信息: Nustache on Github

我希望你觉得这很有用!