我在获取文本时遇到问题!在我的 requirejs 站点中工作的插件。它始终在请求 url 中包含 lib/,但是所有其他文件(不使用文本!)都已成功找到并加载。这是我的目录结构:
WebContent/
|--backbone/
|--Bunch of folders and files
|--config/
|--config.js
|--lib/
|--jquery.js
|--text.js
|--require.js
|--index.html
我的 index.html 文件是:
<body>
<div id="siteLayoutContainer"></div>
<script data-main='config/config' src="lib/require.js"></script>
</body>
配置文件是:
requirejs.config({
baseUrl: './',
paths: {
jquery: 'lib/jquery.js',
backbone: 'lib/backbone.js',
text: 'lib/text',
application: 'backbone/application'
},
text: {
env: 'xhr'
}
});
require(['application'], function(App) {
App.start();
});
我正在使用文本!像这样的插件:
define([
'jquery',
'text!backbone/templates/SomeTemplate.html'
], function(jQuery, NotFoundHtml) {
//Some code here
}
因此,在上面的脚本中,用于模板的 url 是: http://localhost/lib/backbone/templates/SomeTemplate.html
我希望它是: http://localhost/backbone/templates/SomeTemplate.html
我尝试了以下方法:
- 将 text.js 和 require.js 文件移到 WebContent 目录中,但我得到了相同的结果。另外有趣的是,如果我在文本后放置一个空格!然后是路径,它工作正常,并且在获取 html 模板的请求中不包含 lib/ 目录。但是优化器包含空间并且找不到模板。
- 未定义 baseUrl - 结果相同。
- 将 require config.js 内容移动到 index.html 中,它自己的脚本标签在 require.js 脚本标签之前运行 - 结果相同。
- 摆脱配置文件中的文本选项
- 哦,是的,忘了我也试过'text!../backbone/templates/SomeTemplate.html - 结果相同
所以我被困住了,无法弄清楚我错过了什么。我显然不明白文字是怎么回事!插件使用 baseUrl 或它如何确定将用于获取定义文件的 url。