Antara muka fasih DSL JavaScript (menggunakan panggilan berantai) kemahiran example_javascript

WBOY
Lepaskan: 2016-05-16 16:09:24
asal
1462 orang telah melayarinya

Selepas mengkaji DSL dengan teliti untuk seketika, saya menemui beberapa perkara menarik Salah satu perkara yang paling banyak digunakan dalam JavaScript mungkin ialah panggilan berantai (Method Chaining). Menariknya, Martin Flower menyatakan:

Salin kod Kod adalah seperti berikut:

Saya juga perasan salah tanggapan biasa - ramai orang nampaknya menyamakan antara muka fasih dengan Kaedah Rantaian. Sudah tentu rantaian ialah teknik yang biasa digunakan dengan antara muka fasih, tetapi kefasihan sebenar adalah lebih daripada itu.

Ramai orang menyamakan panggilan berantai dengan antara muka yang lancar. Walau bagaimanapun, panggilan berantai ialah kaedah biasa antara muka fasih, dan antara muka fasih sebenar adalah lebih daripada itu.

Antara muka lancar DSL

Niat asal antara muka yang fasih adalah untuk membina API yang boleh dibaca Lagipun, kod itu ditulis untuk dibaca oleh orang ramai.

Begitu juga, mari kita lihat secara ringkas bagaimana kami memanipulasi DOM melalui kaedah melata sebelum ini

Salin kod Kod adalah seperti berikut:

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


Salin kod Kod adalah seperti berikut: $('').append("KLIK SAYA");

Tunggu
Jadi kita boleh mencipta contoh mudah untuk menunjukkan DSL paling ringkas ini


Salin kod Kod adalah seperti berikut: Fungsi = (fungsi() {
This.add = function(){
console.log('1');
         kembalikan ini;
};
This.result = function(){
console.log('2');
         kembalikan ini;
};
Kembalikan ini;
});

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


Walau bagaimanapun ini kelihatan seperti penjana ekspresi.


Penjana ekspresi DSL

Objek penjana ungkapan menyediakan satu set antara muka yang koheren, dan kemudian menukar panggilan antara muka yang koheren menjadi panggilan kepada API pertanyaan perintah yang mendasari.

API sedemikian boleh dilihat dalam beberapa API tentang pangkalan data:


Salin kod Kod adalah seperti berikut: pertanyaan var =
SQL('pilih nama, desc daripada widget')
.WHERE('harga < ', $(params.max_price), DAN,
            'pelepasan = ', $(params.pelepasan))
.ORDERBY('name asc');


Satu masalah dengan panggilan berantai ialah pengakhiran Dalam kod di atas, kami tidak mempunyai pengakhiran, yang sangat mengelirukan. . Menambah pertanyaan dan menamatkan nampaknya merupakan hasil yang baik.

Lain-lain

Kaedah lata Dinyatakan seperti berikut:



a.c();


Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan