4

我正在查看 Twitter 上的 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吗?

4

1 回答 1

1

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

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

第二个选项是在服务器端呈现模板。这与预编译不同,服务器将为每个 Web 请求再次编译和呈现模板。离开 Hogan.js,看看 Nustache 之类的 .NET 替代方案。Mustache 的伟大之处在于它有一个规范,并且已被移植到多种服务器端语言。

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

更多信息: Github 上的 Nustache

我希望这个对你有用!

于 2013-03-13T12:26:43.903 回答