Kam*_*mal 6 javascript optimization templates precompile
我正在研究简单的模板引导我的javascript工作..它需要非常简单,所以我不使用Handlebars,小胡子或任何其他强大的模板引擎.
我一直在阅读" PRECOMPILE "或" COMPILE " 这个词,以提高性能.但我不确定那究竟是什么意思.在我的工作中,我将模板html缓存在我的对象中,以避免每次都碰到模板html.
这是一个非常简单的功能,主要做以下几点
_template = _template.replace(/\{(.+?)\}/g, function(token, match, number, txt) {
return item[match];
});
Run Code Online (Sandbox Code Playgroud)
item是保存要替换的值的对象.
当有人(车把等)说编译模板时,有人可以告诉我它究竟意味着什么.?
nra*_*itz 11
Underscore,Handlebars和大多数其他JS模板从模板字符串中创建一个函数.然后,您可以使用不同的参数多次调用该函数,并获取相应的HTML字符串.(我相信Underscore和Handlebars都是通过将模板字符串解析为JS代码,然后调用Function构造函数来创建编译模板函数来实现的.)
当这些库谈论"预编译"时,它们意味着将模板字符串转换为可重用函数的初始步骤.这可能是一个有点沉重的步骤,但它使得渲染模板更快(在大多数情况下比简单的正则表达式替换更快),因此从模板代码创建函数然后多次使用它更有效,而不是重新编译和渲染每次调用模板.
通常使用模板解析模板regex,然后转换为function使用eval.这称为预编译模板.
调用这些函数,并将一些数据作为参数传递给渲染模板.因此,每次调用模板时都不会对模板进行解析 - 它已经以连接和返回字符串的函数形式存在.