私は Dojo (1.7) の初心者であり、私がばかであることを受け入れたいと思っています (そうでないことを願っています)。私は AMD 用の require.js を使用する方が快適ですが、Dojo を強制して AMD を使用するサードパーティ (ESRI) マッピング API を使用しているため、require.js も使用しようとすると厄介なエラーが発生します。
Backboneとdefine
Underscore に依存するモジュールがあります (最終的には Dojo の MVC を使用する可能性がありますが、この問題は Backbone に固有のものではないと思うので、解決したいと思います)。奇妙なことに、Dojo はdefine
モジュールのロード時に my 内でコールバックを実行しているように見えますが、この時点で依存関係 (アンダースコアとバックボーン) は空のオブジェクトです{}
。return Backbone.View.extend...
Backbone のView
プロパティが存在しないため、コールバック内でエラーが発生します。
Backbone が Underscore に依存していることはわかっていますが、これまでのところ、ハッキーに見える を使用せずに Underscore が最初に読み込まれるようにする方法がわかりませんrequire({async:0},['test1.js','test2.js'...
。ただし、この場合、アンダースコアも空のオブジェクトであるため、define
いずれかの依存関係がロードされる前に のコールバックが実行されます???
EDITこのエラーが発生する前に、コンソールにアンダースコアとバックボーンの両方のHTTPリクエストと200のレスポンスが表示されるため、それらの参照に問題はないと思います。
何か具体的な...
index.html:
<script type="text/javascript">
var dojoConfig = {
tlmSiblingOfDojo: false,
packages: [
{name: 'app', location: '/js'},
{name: 'lib', location: '/js/lib'}
],
aliases: [
['Backbone', 'lib/backbone-0.9.2.min'],
['_', 'lib/underscore-1.3.3.min'],
['$', 'lib/jquery-1.8.0.min'],
['ready', 'dojo/domReady']
]
};
</script>
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.1"></script>
<script type="text/javascript">
require([ 'app/app' ], function(App) {
App.initialize();
});
</script>
app.js:
define(['app/views/main-view'], function(MainView) {
return {
initialize : function() {
new MainView();
}
};
});
メインビュー.js:
define(['_', 'Backbone', 'ready!'], function(_, Backbone) {
// *** ERROR THROWN HERE, Backbone = {}, _ = {} ***
return Backbone.View.extend({
el: 'main',
initialise: function() {
console.log('main view initialising');
this.render();
},
render: function() {
console.log('main view rendering');
}
});
});
ここで何が起こっているのか誰か教えてください。また、Backbone の前に Underscore をロードするための別の提案があれば、本当に役に立ちます!