Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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模板代码?_Javascript_Templates_Template Engine - Fatal编程技术网

如何在JavaScript代码中使用JavaScript模板代码?

如何在JavaScript代码中使用JavaScript模板代码?,javascript,templates,template-engine,Javascript,Templates,Template Engine,类似于我们如何使用JS模板引擎(例如)在HTML中动态插入值(例如{{value inserted by JavaScript}}),我想在JavaScript代码中插入具有相同{{{curly方括号}}符号的JavaScript代码。例如: var myFunction= {{My Function}}; var bar = myFunction(foo); 在My Function模板中定义的代码: function(foo) { return foo+'bar'; } 我试着

类似于我们如何使用JS模板引擎(例如)在HTML中动态插入值(例如
{{value inserted by JavaScript}}
),我想在JavaScript代码中插入具有相同
{{{curly方括号}}
符号的JavaScript代码。例如:

 var myFunction= {{My Function}};
 var bar = myFunction(foo);
My Function模板中定义的代码:

function(foo) {
   return foo+'bar';
}
我试着用谷歌搜索,但我没有取得任何进展,因为所有的结果都是关于JavaScript模板引擎的(例如)

知道如何在浏览器中用JavaScript实现这一点吗?

注1:仅供参考,我希望实现这一点的原因是创建可以在浏览器中进行单元测试的JavaScript函数,并按原样重用(无需替换
{{template}}
code)到JavaScript函数中,这些函数在其JavaScript引擎中支持
{{curly-方括号}
符号

注2:如果太复杂,我将使用后端语言(例如PHP)编写带有
{{{curly-方括号}
的JavaScript代码,并将普通JavaScript返回到浏览器,以便我的单元测试工作,并重复使用后端编写的代码。

您可以使用eval()创建动态JS代码。下面是一个例子:

var getDynamicFunction = function(jsCode) { 
        return '(function() { return function() { ' + jsCode + ' }})()'
   },
   codeToInsert = 'alert("I am created dynamically");';

myFunction = eval(getDynamicFunction(codeToInsert));
myFunction();

我无法想象在什么情况下您真的需要它,因为您总是可以像任何其他js对象一样将函数作为参数传递给函数。我不想说它可能没用,但你真的确定你需要它吗?拥有它肯定会很有用,因为它可以让我开发+单元测试我的代码,然后直接复制/粘贴到Google Tag Manager中。现在,在将代码移植到GTM之前,我必须进行一些手动编辑,GTM很容易出错,并且会破坏单元测试,而单元测试是为了确保代码正常工作。我的Google Tag Manager实例被用于将分析标签部署到每月接待数百万访问者的网站,因此确保一切正常运行非常关键。在这种情况下,我不认为这真的有用:)Handlebar-除了转义-不限于HTML,但可以用于任何语法与Handlebar不冲突的语言。至此,您可以使用Handelbars,因为js代码中不存在
{{}
符号。但是由于转义,您需要使用
{{{}}
或将数据定义为SafeString。谢谢。事实上,我知道
eval
,但我仍然不知道如何在我的JavaScript代码中使用
{{template}}
符号,并使用此技术将其替换为其他JavaScript。