JavaScript DSL 流暢接口(使用鏈式調(diào)用)實例
認真研究了一會DSL,發(fā)現(xiàn)了這么幾件有趣的事,JavaScript用得最多的一個東西怕是鏈式調(diào)用 (方法鏈,即Method Chaining)。 有意思的是Martin Flower指出:
I've also noticed a common misconception - many people seem to equate fluent interfaces with Method Chaining. Certainly chaining is a common technique to use with fluent interfaces, but true fluency is much more than that.
很多人將鏈式調(diào)用等同于流暢接口。然而鏈式調(diào)用是流暢接口的一種常用方法,真實的流暢接口不止這么一點點。
DSL 流暢接口
流暢接口的初衷是構(gòu)建可讀的API,畢竟代碼是寫給人看的。
類似的,簡單的看一下早先我們是通過方法級聯(lián)來操作DOM
var btn = document.createElement("BUTTON"); // Create a <button> element
var t = document.createTextNode("CLICK ME"); // Create a text node
btn.appendChild(t); // Append the text to <button>
document.body.appendChild(btn); // Append <button> to <body>
而用jQuery寫的話,便是這樣子
$('<span>').append("CLICK ME");
等等
于是回我們便可以創(chuàng)建一個簡單的示例來展示這個最簡單的DSL
Func = (function() {
this.add = function(){
console.log('1');
return this;
};
this.result = function(){
console.log('2');
return this;
};
return this;
});
var func = new Func();
func.add().result();
然而這看上去像是表達式生成器。
DSL 表達式生成器
表達式生成器對象提供一組連貫接口,之后將連貫接口調(diào)用轉(zhuǎn)換為對底層命令-查詢API的調(diào)用。
這樣的API,我們可以在一些關(guān)于數(shù)據(jù)庫的API中看到:
var query =
SQL('select name, desc from widgets')
.WHERE('price < ', $(params.max_price), AND,
'clearance = ', $(params.clearance))
.ORDERBY('name asc');
鏈式調(diào)用有一個問題就是收尾,同上的代碼里面我們沒有收尾,這讓人很迷惑。。加上一個query和end似乎是一個不錯的結(jié)果。
其他
方法級聯(lián)
表示如下:
a.b();
a.c();
相關(guān)文章
javascript獲取URL參數(shù)與參數(shù)值的示例代碼
本篇文章主要是對javascript獲取URL參數(shù)與參數(shù)值的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12JavaScript隨機打亂數(shù)組順序之隨機洗牌算法
這篇文章主要介紹了JavaScript隨機打亂數(shù)組順序之隨機洗牌算法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08Javascript靜態(tài)分頁(多個資料,靜態(tài)自動分頁)
看的處理是個不錯的想法與應用大家可以看下。2009-02-02JS/jQuery判斷DOM節(jié)點是否存在的簡單方法
下面性價比就為大家?guī)硪黄狫S/jQuery判斷DOM節(jié)點是否存在的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧2016-11-11JS組件Form表單驗證神器BootstrapValidator
做Web開發(fā)的我們,表單驗證是再常見不過的需求了。友好的錯誤提示能增加用戶體驗。今天就來看看bootstrapvalidator如何使用,感興趣的小伙伴們可以參考一下2016-01-01微信小程序使用template標簽實現(xiàn)五星評分功能
這篇文章主要為大家詳細介紹了微信小程序使用template標簽實現(xiàn)五星評分功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11