2016-05-16 74 views
0

我使用车把我的应用程序,它主要是针对桌面浏览器模板引擎。预编译车把模板双打文件大小

目前我将所有模板以HTML格式分发并在浏览器中编译。我想将预编译应用于我的模板,以使我的应用程序更快,但事情并没有按照我的想法工作。

我运行命令这样的预编译,并尽量减少我的模板:

handlebars -m example.handlebars -f example.js

然后,我已经得到了example.js文件大小增加了一倍

我砍掉消耗浏览器无需编译模板和车把的运行时包要小得多。但是我的模板的文件大小比我得到的要多。

所以我都做什么毛病我的预编译模板时?
还是我误解预编译模板的意义?

回答

2

预编译模板时,因为像这样的表情总是会有大小的开销:

<div>{{values.abc}}</div> 

将被编译到是这样的:

function program(data) { 
    return '<div>' + program2(data) + '</div>'; 
} 
function program2(data) { 
    return data.values ? data.values.abc ? data.values.abc : '' : ''; 
} 

但这里的大小不应该是一个主要关注。如果是这样,您应该考虑在需要时动态加载模板,而不是一次将所有内容发送到客户端。

+1

要削减“一些”(虽然很少)的尺寸,我再压缩我的车把HTML预编译之前。 但是,不要烦恼了,因为预编译的文件大小增加 - 这是在客户端编译的重大改进。 –

+1

@SebastienDaniel HTML缩小通常不会给太多,因为无论如何一切都会发送gzip。虽然JavaScript缩小(uglifying)可以提供一些额外的帮助,但代码的结构可以更改以及空格,因此可以删除换行符。 – andlrc

+0

但动态加载模板无法解决“扩展文件大小”问题。更大的文件需要更多的时间进行网络传输,所以我怀疑是否值得这样做。我测试了在chrome中编译速度的模板,速度非常快。 – AmBeta