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
内部init.js
で定義されていないのかということapp.js
です。
編集: ディレクトリ構造は次のようになります。
/ index.html
/ js / init.js
/ js / app.js