Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是javascript模板预编译?_Javascript_Templates_Optimization_Precompile - Fatal编程技术网

什么是javascript模板预编译?

什么是javascript模板预编译?,javascript,templates,optimization,precompile,Javascript,Templates,Optimization,Precompile,我正在为我的javascript工作开发简单的模板引擎。。它需要非常简单,所以我没有使用车把,胡子或任何其他强大的模板引擎可用 我一直在阅读单词“预编译””或“编译””模板来提高性能。但我不确定这到底是什么意思。在我的工作中,我将模板html缓存在我的对象中,以避免每次命中模板html 这是一个非常简单的函数,主要完成以下功能 _template = _template.replace(/\{(.+?)\}/g, function(token, match, number, txt) {

我正在为我的javascript工作开发简单的模板引擎。。它需要非常简单,所以我没有使用车把,胡子或任何其他强大的模板引擎可用

我一直在阅读单词“预编译””或“编译””模板来提高性能。但我不确定这到底是什么意思。在我的工作中,我将模板html缓存在我的对象中,以避免每次命中模板html

这是一个非常简单的函数,主要完成以下功能

_template = _template.replace(/\{(.+?)\}/g, function(token, match, number, txt) {
                    return item[match];
                });
项是保存要替换的值的对象


有人能告诉我,当他们(把手等)说编译模板时,这到底意味着什么吗

更新:我在这里不正确,请参见下面的评论

好吧,假设我的模板是一个带有填空的句子:

有一天,他决定带着他一起去

编译模板将填补空白

那天,约翰决定带萨利去看蝙蝠侠的首映式。


希望隐喻在这种情况下有用:)

通常使用
regex
解析模板,然后使用
eval
转换为
function
。 这称为预编译模板


使用一些作为参数传递的数据调用此类函数,这些参数称为渲染模板。因此,模板不会在每次调用时都被解析——它已经以连接和返回字符串的函数的形式存在。

下划线、把手和大多数其他JS模板使用模板字符串创建函数。然后可以使用不同的参数多次调用该函数,并获得相应的HTML字符串。(我相信下划线和把手都是通过将模板字符串解析为JS代码,然后调用
函数
构造函数来生成编译后的模板函数来实现的。)


当这些库谈到“预编译”时,它们指的是将模板字符串转换为可重用函数的初始步骤。这可能是一个有点繁重的步骤,但它使呈现模板的速度更快(在大多数情况下比简单的正则表达式替换更快),因此从模板代码创建函数并多次使用它比每次调用模板时重新编译和呈现更为有效。

Nope,这不是这些库的意思。你所描述的是呈现模板,而不是编译模板。我在阅读了@nrabinowitz的回复后发现了这篇文章。。