我正在尝试将我在单独的util.js
文件夹中创建的utils
文件加载到我的Backbone应用程序中,但无论我用于RequireJS的配置如何,都会加载该文件通过Require(因为我可以在dev工具中看到它已加载),但在视图本身中始终未定义。据我所知,我似乎已经正确定义了文件并尝试了所有不同的RequireJS配置组合 - 在paths
var中定义路径,定义paths
和shim
导出名称,根本不在require config中定义它,只是直接在视图定义中声明路径,但它总是未定义。
我的文件夹结构是:
js
- views
- controllers
(etc)
- utils
- util.js
我试图加载的文件是:
util.js中
define(function() {
return {
showMessage: function() {
console.log('show message');
}
};
});
就像我说的那样,我尝试了各种各样的需求配置。例如,目前我有:
require.config({
paths : {
underscore : 'lib/lodash',
backbone : 'lib/backbone-1.0.0',
marionette : 'lib/backbone.marionette-1.1.0',
jquery : 'lib/jquery-2.0.3.min',
//jquery : 'lib/jquery-2.0.3',
tpl : 'lib/tpl',
pnotify : 'lib/jquery.pnotify',
utils : 'utils/util'
},
shim : {
'lib/backbone-localStorage' : ['backbone'],
underscore: {
exports: '_'
},
backbone: {
exports: 'Backbone',
deps: ['jquery','underscore']
},
marionette: {
exports: 'Backbone.Marionette',
deps: ['jquery', 'underscore', 'backbone']
},
pnotify: ['jquery'],
utils: {
exports: 'utils'
}
}
});
require(['app'],function(app){
app.start();
});
在我的调用视图中(修改为只显示utils import):
define([
'utils'
], function (utils) {
"use strict";
return Marionette.Controller.extend({
initialize: function() {
console.log(utils); // undefined
}
});
});
我的所有其他骨干代码(视图,模型,集合等)加载正常,但我无法加载此文件。我在这里缺少什么?
答案 0 :(得分:1)
你不应该需要垫片定义。路径声明应涵盖您的用例。
你定义的垫片告诉requirejs它应该寻找一个全局命名的' utils'提供给utils / util.js列为依赖项的任何模块。由于您在utils / util.js中使用requirejs语法而不创建全局,因此不应该使用填充程序。