使用带有文本插件的 require.js 导入文本文件时,最终输出中缺少一些正斜杠,导致解析器由于未关闭的块语句而失败。JavaScript 非常标准,看起来像:
define(['handlebars', 'some/dependency', 'text!some/text.html'], function (Handlebars, SomeDependency, text) {
var MyView = Backbone.View.Extend({
template: Handlebars.compile(text),
// etc.
})
})
导入有效,这意味着我从 require 获取数据,但我发现如果 text.html 的内容如下所示:
<div {{#if prop}}class="{{prop}}" {{else}} class="other-class"{{/if}}></div>
它没有正确返回。相反,我得到的是:
<div {{#if prop}}class="{{prop}}" {{else}} class="other-class"{{ if}}></div>
当 if 块位于 html 元素中时,它以某种方式丢失了结束正斜杠。但是,如果我将其更改为:
{{#if prop}}
<div class="{{prop}}"></div>
{{else}}
<div class="other-class"></div>
{{/if}}
它正确返回。
现在,一个明显的解决方案是使用第二范式,但我的所有模板都像第一个范式一样设置,并且直到几天前它们都能正常工作(一周,顶部)。
有人对可能导致这种情况的原因有任何想法吗?
现在我将浏览提交日志,看看是否能找到任何明显的东西,如果我发现任何东西,我会在这里添加。