Heim  >  Artikel  >  Web-Frontend  >  JavaScript-DSL-flüssige Schnittstelle (mit Kettenaufruf) example_javascript-Kenntnisse

JavaScript-DSL-flüssige Schnittstelle (mit Kettenaufruf) example_javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:09:241464Durchsuche

Nachdem ich DSL eine Weile sorgfältig studiert habe, habe ich einige interessante Dinge entdeckt. Eines der am häufigsten verwendeten Dinge in JavaScript sind wahrscheinlich verkettete Aufrufe (Method Chaining). Interessanterweise wies Martin Flower darauf hin:

Code kopieren Der Code lautet wie folgt:

Mir ist auch ein weit verbreitetes Missverständnis aufgefallen: Viele Leute scheinen Fluent Interfaces mit Method Chaining gleichzusetzen. Verkettung ist sicherlich eine gängige Technik für Fluent Interfaces, aber echte Fluency ist viel mehr.

Viele Menschen setzen verkettete Anrufe mit flüssigen Schnittstellen gleich. Kettenaufrufe sind jedoch eine gängige Methode für fließende Schnittstellen, und die echte fließende Schnittstelle ist mehr als das.

DSL-glatte Schnittstelle

Die ursprüngliche Absicht der Fluent-Schnittstelle besteht darin, eine lesbare API zu erstellen. Schließlich ist der Code so geschrieben, dass er von Menschen gelesen werden kann.

Lassen Sie uns in ähnlicher Weise einen kurzen Blick darauf werfen, wie wir zuvor das DOM durch Methodenkaskadierung manipuliert haben

Code kopieren Der Code lautet wie folgt:

var btn = document.createElement("BUTTON"); // Ein


Code kopieren Der Code lautet wie folgt: $('').append("CLICK ME");

Warten
So können wir ein einfaches Beispiel erstellen, um dieses einfachste DSL zu zeigen


Code kopieren Der Code lautet wie folgt: Func = (function() {
This.add = function(){
console.log('1');
         gib dies zurück;
};
This.result = function(){
console.log('2');
         gib dies zurück;
};
Geben Sie dies zurück;
});

var func = new Func();
func.add().result();


Dies sieht jedoch wie ein Ausdrucksgenerator aus.


DSL-Ausdrucksgenerator

Das Ausdrucksgeneratorobjekt stellt eine Reihe kohärenter Schnittstellen bereit und wandelt dann die kohärenten Schnittstellenaufrufe in Aufrufe an die zugrunde liegende Befehlsabfrage-API um.

Eine solche API ist in einigen APIs zu Datenbanken zu sehen:


Code kopieren Der Code lautet wie folgt: var query =
SQL('Name auswählen, aus Widgets absteigen')
.WHERE('price < ', $(params.max_price), AND,
            'clearance = ', $(params.clearance))
.ORDERBY('name asc');


Ein Problem bei verketteten Aufrufen ist das Ende. Im obigen Code haben wir das Ende nicht, was sehr verwirrend ist. . Das Hinzufügen einer Abfrage und eines Endes scheint ein gutes Ergebnis zu sein.

Andere

Methodenkaskade Wie folgt ausgedrückt:



Code kopieren Der Code lautet wie folgt: a.b();
a.c();


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn