前幾日我們構(gòu)建時(shí)所用的gulp-file-include被詬?。骸癷f判斷太弱了” “參數(shù)不能有缺省值,現(xiàn)在有10多個(gè)參數(shù),一個(gè)也不能省,太費(fèi)勁”……當(dāng)然,可以炒掉廝,換新的。不過(guò)現(xiàn)實(shí)情況時(shí),我們現(xiàn)在已經(jīng)自己定制過(guò)了,加了{{MIMAGE}} {{MCSS}}等我們獨(dú)用的標(biāo)識(shí)。如果換新的插件,這些又得重現(xiàn)實(shí)現(xiàn)一遍。鑒于此,我就步其后塵,加上了對(duì)缺省參數(shù)的支持,算是“打個(gè)補(bǔ)丁接著穿”吧。因功力有限,沒有給if加上else。
說(shuō)明
此方法的思路是給某一個(gè)文件內(nèi)所用參數(shù)設(shè)置缺省值。
gulp-file-include本來(lái)有全局的設(shè)置缺省參數(shù)的機(jī)制(在gulp任務(wù)中設(shè)context參數(shù),見文檔),這種機(jī)制就像全局變量一樣,作用域太廣,適用于全局或者多個(gè)文件共用變量的情況。
用法
設(shè)有一個(gè)文件 footer.md.html,其中有一個(gè)參數(shù)@@foo。我們預(yù)期缺省讓它為"abc",如需指定,再特別設(shè)定。那就可以這樣:
// footer.md.html
// 設(shè)置缺省參數(shù),推薦放在文件首部
@@default {
"foo": "abc"
}
// 正文
<div>
<!-- ... -->
<p>@@foo</p>
<!-- ... -->
</div>
@@include該文件時(shí),若欲使用foo的缺省值,則:
@@include("path/to/footer.md.html");
若欲賦其它值,則:
@@include("path/to/footer.md.html", {"foo": "some value"});
就是這樣了。
@@if
其實(shí)缺省參數(shù)在@@if時(shí)更有用。上面的情況,如果找不到變量,僅是不替換;但在@@if時(shí),找不到變量gulp會(huì)報(bào)錯(cuò)。
用法跟上面完全一樣,因我們平時(shí)用的不多,故這里順帶提一下@@if的用法。文檔
// footer.md.html
// 設(shè)置缺省參數(shù),推薦放在文件首部
@@default {
"foo": "abc"
}
// 正文
<div>
<!-- ... -->
@@if (foo === "abc") {
<p>This is for default.</p>
}
<!-- ... -->
</div>
@@if用于根據(jù)某一條件來(lái)決定是否插入指定某html塊。@@參數(shù)則總是顯示,只不過(guò)顯示的值不同。就像編程時(shí)的if語(yǔ)句和變量一樣,各有用武之地,請(qǐng)酌情選用。
文件.../m/common/Footer/main.md.html中有一個(gè)示例,可參考