如何在JavaScript代码中使用JavaScript模板代码?
类似于我们如何使用JS模板引擎(例如)在HTML中动态插入值(例如如何在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'; } 我试着
{{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。