我使用gulp从tempaltes生成HTML页面。
模板如下所示:
...
<script type="application/javascript">
{placeholder}
</script>
...
我正在尝试用一些缩小的JS代码替换占位符。
我的gulp构建使用如下所示的方法:
function renderTemplate(minifiedJS) {
var template = fs.readFileSync('template.html', 'utf-8');
return template.replace('{placeholder}', minifiedJS); // this is ok because the {placeholder} appears only once.
}
然而,结果看起来像这样:
...
<script type="application/javascript">
MINIFIED JS CODE{placeholder}SOME MORE MINIFIED JS CODE
</script>
...
替换如何工作,{占位符}仍然出现在中间中?
答案 0 :(得分:1)
经过数小时的调试,我发现缩小的代码包含字符&#34; $&amp;&#34;。
此组合触发了名为RegExp.lastMatch的正则表达式功能。
它用缩小的JS代码替换了{placeholder},然后它替换了&#34; $&amp;&#34;值为&#34; {placeholder}&#34;。
是的。
我最终将实现更改为
function renderTemplate(minifiedJS) {
var template = fs.readFileSync('template.html', 'utf-8');
var splitTemplate = template.split('{placeholder}');
return splitTemplate[0] + minifiedJS + splitTemplate[1]; // this is ok because the placeholder appears exactly once.
}