我想使用 require.js、backbone.js 和 underscore.js 制作一个骨架应用程序。根据 www 教程,我创建了一个骨架,但我在某处有一个错误。
这是 init.js 代码:
requirejs.config({
baseUrl: 'js',
paths: {
jquery: 'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery',
underscore: 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore',
backbone: 'http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone'
},
shim: {
backbone: {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
underscore: {
exports: '_'
},
jquery: {
exports: '$'
}
}
});
require(['underscore', 'backbone', 'app'],
function(_, Backbone, app) {
console.log(app);
app.start();
});
这是 app.js:
require(['underscore', 'backbone'],
function(_, Backbone) {
'use strict';
return {
start: function() {
console.log('APP', 'start');
}
};
});
这是 index.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Wealthy Laughing Duck</title>
<script data-main="js/init" src="http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.5/require.min.js"></script>
</head>
<body>
</body>
</html>
我面临的问题是 app.js 文件return
不起作用(可能 require.js 有问题)。控制台输出为:
undefined ----- init.js:24
Uncaught TypeError: Cannot call method 'start' of undefined ----- init.js:25
问题是:为什么app
undefined inside init.js
,如果它被定义在app.js
?
编辑:目录结构如下所示:
/ index.html
/ js / init.js
/ js / app.js