私はDurandalを初めて使用しますが、jQueryと少しのKnockoutJSのバックグラウンドを考慮すると、優れたフレームワークだと思います。ただし、DurandalでRequireJSを使用する2つの異なる方法に出くわしました。
Durandalサンプルでは、次の構文が使用されます: Durandal / App / samples / modal / index.js
define(['durandal/app', './customModal'], function (app, CustomModal) {
return {
showCustomModal: function() {
app.showModal(new CustomModal()).then(function(response) {
app.showMessage('You answered "' + response + '".');
});
}
};
});
ここで、依存関係/要件(ここで正しい単語ですか?)は、define(['durandal/app', './customModal']
)の呼び出しの最初の引数として定義されます。
Durandalのドキュメントでは、次の構文が使用されています。モジュールの作成
define(function(require){
var backend = require('backend');
return {
customers:ko.observableArray([]),
activate:function(){
var that = this;
return backend.getCustomers().then(function(results){
that.customers(results);
});
}
};
});
ここでは、関数のみがdefineの呼び出しに渡され、requireはその関数の依存関係/要件として使用されます。次に、require関数が呼び出され、必要な実際の依存関係/要件(var backend = require('backend');
)が取得されます。
.net IoCのバックグラウンドから来ると、最初は正しいように見え、要件を定義し、requirejsフレームワークに依存関係を見つけさせ、2番目はサービスロケーターのアンチパターンのように見えます。
これらの2つの方法の私の解釈は正しいですか、最初の方法を使用する必要があり、ドキュメントは間違っています(!)?
そうでない場合、これら2つの方法の長所/短所は何ですか?どちらを使用することをお勧めしますか、またその理由は何ですか?
どうもありがとう