Handlebars JS预编译速度比在服务器上渲染更快?

时间:2014-07-09 18:32:37

标签: node.js single-page-application handlebars.js precompiled-templates

我提前为关于Handlebars的总noob问题道歉。我来自Rails背景,而Handlebars看起来很酷我看到它比在服务器上编译视图更有优势。

所以这是问题。

目前,我们的应用程序在节点服务器上编译Handlebars JS模板,并将完全呈现的页面传递回客户端。我被要求在客户端上预先编译用于渲染的模板。

首先,我对如何设计这一点感到有点困惑。初始下载到客户端只是像布局模板(只是样板html,css和js),然后客户端将使用传递给它的任何json数据,以及位于Handlebars.templates中的预编译模板来构建观点的细节?

如果是这样,使用它可能需要的每个可能的模板加载客户端是否真的更有效,而不是只在它需要时提供它所需要的东西?

3 个答案:

答案 0 :(得分:1)

  

首先,我对如何设计这一点感到有点困惑。初始下载到客户端只是像布局模板(只是样板html,css和js),然后客户端将使用传递给它的任何json数据,以及位于Handlebars.templates中的预编译模板来构建观点的细节?

如果您正在做事robustly,那么您将像往常一样提供服务器呈现的页面。

那将包括嵌入了模板的<script>。它们只是在通常从服务器加载第二页时才进入播放。

  

如果是这样,使用它可能需要的每个可能的模板加载客户端是否真的更有效,而不是只在它需要时提供它所需要的东西?

初始加载会产生额外费用。如果您的数据合适,那么从长远来看,这会得到回报,因为每次访问基于相同模板的新页面时,您都不需要重新获取整个HTML文档(在某些情况下,所有更改都可以是计算出客户端,你可以完全避免一些HTTP请求。

答案 1 :(得分:0)

初始加载速度不快。

但是如果您正在进行“单页”应用程序,那么初始加载后的每个更改都会更快。它会给人一种更加动态和快速的感觉。

但如果您使用表单进行操作,如果您没有像应用程序一样使用“单页”,则没有理由提供客户端。

答案 2 :(得分:0)

这实际上取决于您的应用程序的特定需求和限制。客户端上模板的优点是减少了http请求和快速性能。缺点是膨胀增加。因此,根据您的性能瓶颈位置,与向初始有效负载添加膨胀相比,增加http请求可能更好或更差。当然,你可以懒得加载一些模板等等等。

至于架构它,是的,您的模板正在等待客户端。当您从服务器请求JSON时,您将数据插入模板并在页面上呈现。