DSL をしばらく注意深く研究した結果、JavaScript で最もよく使用されるものの 1 つは、おそらく連鎖呼び出し (メソッド連鎖) であることがわかりました。 興味深いことに、Martin Flower 氏は次のように指摘しました。
また、よくある誤解にも気付きました。多くの人が流暢なインターフェイスをメソッド チェーンと同一視しているようです。確かにチェーンは流暢なインターフェイスで使用される一般的な手法ですが、真の流暢さはそれ以上のものです。
多くの人は、連鎖呼び出しを流暢なインターフェイスと同一視します。ただし、チェーン呼び出しは流暢なインターフェイスの一般的な方法であり、実際の流暢なインターフェイスはそれ以上のものです。
DSL スムーズ インターフェイス
流暢なインターフェースの本来の目的は、読みやすい API を構築することです。結局のところ、コードは人が読めるように書かれています。
同様に、先ほどメソッド カスケードを通じて DOM をどのように操作したかを簡単に見てみましょう
var btn = document.createElement("BUTTON") //
$('
').append("クリックしてください");
待ってください
それで、この最も単純な DSL を示す簡単な例を作成できます
Func = (function() {
This.add = function(){
console.log('1');
これを返します;
};
This.result = function(){
console.log('2');
これを返します;
};
これを返してください;
});
var func = new Func();
func.add().result();
ただし、これは式ジェネレーターのように見えます。
DSL 式ジェネレーター
式ジェネレーター オブジェクトは、コヒーレント インターフェイスのセットを提供し、コヒーレント インターフェイス呼び出しを基礎となるコマンド クエリ API への呼び出しに変換します。
このような API は、データベースに関するいくつかの API で見られます。
var クエリ =
SQL('ウィジェットから名前、説明を選択')
.WHERE('価格 < ', $(params.max_price), AND,
'クリアランス = ', $(params.clearance))
.ORDERBY('name asc');
連鎖呼び出しに関する問題の 1 つは、上記のコードには終わりがないため、非常に混乱します。 。クエリと終了を追加すると良い結果が得られるようです。
その他
メソッドカスケード
以下のように表現します。
a.b();
a.c();