【发布时间】: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