How does the text! plugin use the baseUrl?
我在获取文字时遇到问题!插件可以在我的requirejs网站上使用。它始终在请求url中包含lib /,但是已成功找到并加载了所有其他文件(不使用文本!)。这是我的目录结构:
1 2 3 4 5 6 7 8 9 10 | WebContent/ |--backbone/ |--Bunch of folders and files |--config/ |--config.js |--lib/ |--jquery.js |--text.js |--require.js |--index.html |
我的index.html文件是:
1 2 3 4 | <body> <script data-main='config/config' src="lib/require.js"> </body> |
配置文件为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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(); }); |
我正在使用文字!像这样的插件:
1 2 3 4 5 6 | 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-相同的结果。
-
移动了
在自己的脚本标签中要求将config.js内容转换为index.html
在require.js脚本标记之前-相同的结果。 - 摆脱配置文件中的文本选项
- 哦,是的,忘记了我也尝试过'text!../ backbone / templates / SomeTemplate.html-相同的结果
所以我被困住了,无法弄清我想念的是什么。我显然不明白该怎么写!插件使用baseUrl或它如何确定用于获取已定义文件的URL。
在对问题进行编辑之后,它现在包含了用于诊断问题的所有信息。正如您在评论中所猜到的那样,问题确实在于以下路径:
1 | backbone: 'lib/backbone.js', |
放弃了您提供给
1 | "backbone/templates":"backbone/templates" |
这样可以使您在
注意:最好避免在模块名称中添加扩展名,因此您应该将其从jQuery和Backbone的值中删除。