我的tpl有以下目录结构:
-src
-assets
-js
-lib
[files]
-src
-templates
-common
builder_regions.tpl
我的require.config是:
require.config({
baseUrl:'src/assets/js',
paths: {
backbone: 'lib/backbone',
jquery: 'lib/jquery.min',
'jquery-ui': 'lib/jquery-ui-1.10.4.custom.min',
underscore: 'lib/underscore.min',
modernizr: 'lib/modernizr.min',
'magnific-popup': 'lib/magnific-popup.min',
text: 'src/assets/jslib/text',
marionette: 'lib/backbone.marionette.min',
tpl: 'lib/underscore-tpl'
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
},
backbone: {
deps: [ 'jquery', 'underscore' ],
exports: 'Backbone'
},
marionette: {
deps: [ 'jquery', 'underscore', 'backbone' ],
exports: 'Marionette'
},
'jquery-ui': {
deps: [ 'jquery' ],
exports: '$ui'
},
'magnific-popup': {
deps: [ 'jquery' ],
exports: 'magnificPopup'
},
tpl: [ 'text' ]
}
});
我的需求模块设置为:
define([ 'tpl!src/templates/common/builder_regions.tpl', function( Marionette, layoutTpl ) {
console.log( 'did not throw' );
});
当我访问模块时,我收到以下错误:
GET http://localhost:3000/src/assets/js/src/tpl.js 404 (Not Found)
为什么在require.config中提供路径时引用了文件tpl.js?谢谢!
答案 0 :(得分:0)
如果您的underscore-tpl.js
为this one,那么您不需要shim
配置,因为它会自行调用define
。如果对不需要垫片的东西使用shim
配置,RequireJS可能会表现得很奇怪。
另一件与您在此报告的问题无关但可能让您遇到麻烦的事情:jQuery至少从版本1.9开始就不需要shim
。因此,如果您使用的版本是> = 1.9,则应移除shim
所拥有的jquery
。
答案 1 :(得分:0)
试试这个:
define(['marionette', 'tpl!src/templates/common/builder_regions.tpl'], function( Marionette, layoutTpl ) {
console.log( 'did not throw' );
});