【发布时间】:2014-04-14 18:38:49
【问题描述】:
我正在尝试将我在单独的 utils 文件夹中创建的 util.js 文件加载到我的 Backbone 应用程序中,但无论我对 RequireJS 使用什么配置,该文件都是由 Require 加载的(我可以在加载的开发工具中查看它),但在视图本身中始终未定义。据我所知,我似乎已经正确定义了文件并尝试了 RequireJS 配置的所有不同组合 - 在 paths var 中定义路径,定义 paths 和导出名称的 shim,而不是定义它完全在 require 配置中,只是直接在视图定义中声明路径,但它始终未定义。
我的文件夹结构是:
js
- views
- controllers
(etc)
- utils
- util.js
我要加载的文件是这样的:
util.js
define(function() {
return {
showMessage: function() {
console.log('show message');
}
};
});
就像我说的,我尝试了各种 Require 配置。例如,目前我有:
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 导入):
define([
'utils'
], function (utils) {
"use strict";
return Marionette.Controller.extend({
initialize: function() {
console.log(utils); // undefined
}
});
});
我的所有其他主干代码(视图、模型、集合等)都可以正常加载,但我就是无法加载此文件。我在这里错过了什么?
【问题讨论】:
标签: backbone.js requirejs