-1

使用带有文本插件的 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}}

它正确返回。

现在,一个明显的解决方案是使用第二范式,但我的所有模板都像第一个范式一样设置,并且直到几天前它们都能正常工作(一周,顶部)。

有人对可能导致这种情况的原因有任何想法吗?

现在我将浏览提交日志,看看是否能找到任何明显的东西,如果我发现任何东西,我会在这里添加。

4

1 回答 1

0

在与我们的各个团队进行了多次讨论后,我们将问题缩小到由我们的 Amazon 实例中的 Apache pageSpeed 模块引起的。

此设置导致<head/>标签出现: https ://developers.google.com/speed/pagespeed/module/filter-head-add

而且我不确定哪个特定设置可能是导致{{/if}}.

禁用mod后,问题得到解决。

于 2015-08-26T18:10:12.437 回答