【问题标题】:RequireJS Text Plugin Imports My Templates IncorrectlyRequireJS 文本插件错误地导入了我的模板
【发布时间】:2015-11-15 18:55:51
【问题描述】:

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

它会正确返回。

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

有人对可能导致此问题的原因有任何想法吗?

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

【问题讨论】:

  • 看来requirejs文本插件并不是这里的罪魁祸首。我从后端提供的 html 以某种方式损坏。它还在每个文件的开头添加了一个 标签。服务器上的文件已被证明是正确的,因此显然是在传输过程中发生了一些事情。

标签: javascript text requirejs require requirejs-text


【解决方案1】:

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

此设置导致出现&lt;head/&gt; 标记: https://developers.google.com/speed/pagespeed/module/filter-head-add

我不确定哪个特定设置可能是导致{{/if}} 损坏的原因。

禁用模组后,问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多