第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Webpack的Loader為什么是從右往左寫(xiě)?

Webpack的Loader為什么是從右往左寫(xiě)?

素胚勾勒不出你 2018-10-18 14:15:18
比如說(shuō)下面的Loader寫(xiě)法:style-loader!css-loader!sass-loader我們一般都是習(xí)慣從左往右,為什么Loader的寫(xiě)法是從右往左呢?
查看完整描述

1 回答

?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

其實(shí)為啥是從右往左,而不從左往右,只是Webpack選擇了compose方式,而不是pipe的方式而已,在技術(shù)上實(shí)現(xiàn)從左往右也不會(huì)有難度

在Uninx有pipeline的概念,平時(shí)應(yīng)該也有接觸,比如?ps aux | grep node,這些都是從左往右的。

但是在函數(shù)式編程中有組合的概念,我們數(shù)學(xué)中常見(jiàn)的f(g(x)),在函數(shù)式編程一般的實(shí)現(xiàn)方式是從右往左,如

const compose = (...fns) => x => fns.reduceRight((v, f) => f(v), x);

const add1 = n => n + 1; //加1

const double = n => n * 2; // 乘2

const add1ThenDouble = compose(

? double,

? add1

);

add1ThenDouble(2); // 6

// ((2 + 1 = 3) * 2 = 6)?

這里可以看到我們先執(zhí)行的加1,然后執(zhí)行的double,在compose中是采用reduceRight,所以我們傳入?yún)?shù)的順序編程了先傳入double,后傳入add1

那么其實(shí)也可以實(shí)現(xiàn)從左往右

const pipe = (...fns) => x => fns.reduce((v, f) => f(v), x);

const add1ThenDouble = pipe(

? add1,

? double

);

add1ThenDouble(2); // 6

// ((2 + 1 = 3) * 2 = 6)

所以只不過(guò)webpack選擇了函數(shù)式編程的方式,所以loader的順序編程了從右往左,如果webpack選擇了pipe的方式,那么大家現(xiàn)在寫(xiě)loader的時(shí)候的順序就變成從左往右了

  • compose :?require("style-loader!css-loader!sass-loader!./my-styles.sass");

  • pipe :?require("./my-styles.sass!sass-loader!css-loader!style-loader");


查看完整回答
反對(duì) 回復(fù) 2018-11-25
  • 1 回答
  • 0 關(guān)注
  • 897 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)