Requirejs 课文怎么写!插件使用baseUrl?

Requirejs 课文怎么写!插件使用baseUrl?,requirejs,requirejs-text,Requirejs,Requirejs Text,我在获取文本时遇到问题!在我的requirejs站点中工作的插件。它总是在请求url中包含lib/文件,但是所有其他文件(不使用文本!)都已成功找到并加载。以下是我的目录结构: WebContent/ |--backbone/ |--Bunch of folders and files |--config/ |--config.js |--lib/ |--jquery.js |--text.js |--r

我在获取文本时遇到问题!在我的requirejs站点中工作的插件。它总是在请求url中包含lib/文件,但是所有其他文件(不使用文本!)都已成功找到并加载。以下是我的目录结构:

WebContent/
  |--backbone/
        |--Bunch of folders and files
  |--config/
        |--config.js
  |--lib/
        |--jquery.js
        |--text.js
        |--require.js
  |--index.html
我的index.html文件是:


配置文件是:

requirejs.config({
baseUrl:“./”,
路径:{
jquery:'lib/jquery.js',
主干:“lib/backbone.js”,
text:'lib/text',
应用程序:“主干/应用程序”
},
正文:{
环境:“xhr”
}
});
需要(['application'],函数(App){
App.start();
});
我在用文字!像这样的插件:

定义([
“jquery”,
'text!backbone/templates/SomeTemplate.html'
],函数(jQuery,NotFoundHtml){
//这里有一些代码
}
因此,在上面的脚本中,用于模板的url是:

我希望它是:

我尝试了以下方法:

  • 将text.js和require.js文件移出到WebContent中 但我得到了同样的结果。还有一件有趣的事 如果我在文本后面加一个空格,然后加上路径,效果很好 在获取html的请求中不包含lib/目录 但是优化器包含空间,无法找到 模板
  • 未定义baseUrl-结果相同
  • 移动 需要将config.js内容转换为index.html中运行的脚本标记 在require.js脚本标记之前-相同的结果
  • 删除配置文件中的文本选项
  • 哦,是的,忘了我也试过“文本”。/backbone/templates/SomeTemplate.html-结果相同

因此,我被卡住了,无法找出我遗漏了什么。我显然不理解text!插件如何使用baseUrl,或者它如何确定用于获取定义文件的url。

在您编辑问题后,它现在包含了诊断问题的所有信息。正如您在一条评论中猜测的,问题事实上,这条道路:

backbone: 'lib/backbone.js',
正在放弃您给
文本
插件的模板解析。当文本插件加载您给它的内容时,它将采用
符号后的路径,并将其视为模块名称,并执行模块解析过程。模块解析的工作方式是检查是否存在p与路径中的任何键匹配的refix,并将使用与该键关联的值更改前缀,从而给出您获得的结果。解决此问题的一种方法是将其添加到路径配置中:

"backbone/templates": "backbone/templates"
这将使您在
backbone/templates
下请求的任何内容都不会被
backbone
路径弄乱

注意:最好避免在模块名中添加扩展名,因此应该将其从jQuery和主干的值中删除