AMDモジュールの作成に関するAddyOsmaniの優れたブログ投稿を読んでいます。私は彼の投稿から持ち上げたjsの単純なチャンクから始めます:
define('modTest', [],
// module definition function
function () {
// return a value that defines the module export
// (i.e the functionality we want to expose for consumption)
// create your module here
var myModule = {
doStuff:function(){
console.log('Yay! Stuff');
}
}
return myModule;
}
);
foo
とへの依存関係を削除しましたbar
。コンソールにログを記録する単純なオブジェクトが必要です。
だから私はそれを保存して/js/modTest.js
からそれをロードしようとします:
curl(['/js/modTest.js'])
.then(function(mt) {
console.log("Load complete");
console.log("mt:");
console.log(mt);
mt.doStuff()
}, function(ex) {alert(ex.message);})
結果:エラー:Multiple anonymous defines in URL
。OK、うまくいきませんでした。名前空間に追加しようとしました:define('myCompany/modTest', [],
、同じ結果。依存関係配列に空の文字列を追加しようとしましたが、同じ結果です。
curl(['modTest.js'], function(dep){console.log(dep)});
同じ結果で試してみました。
Addyのブログ投稿のコードは正しくありませんか?私は何か間違ったことをしていますか?たぶんカールのバグ?
アップデート5/24:require.jsを優先してcurl.jsを捨てました。奇数エラーはゼロで、切り替える作業はほとんどありません。コードをクライアント側とサーバー側で実行するには、amdefineを少し処理する必要がありました(1つのオブジェクトが両方の場所にあるため、gruntを構成してそれを処理する必要がありました)。私の定義は一般的に次のようになります。
define(->
class AlphaBravo
...
また、読み込みに問題はありません。