大家好,我是前端西瓜哥,今天随便说点小知识点。
Webpack 的 Loader 为什么是从右往左写?
比如 style-loader!css-loader!sass-loader,最先执行的是最右边的 sass-loader,然后是 css-loader,最后才是 style-loader。
这是因为,我们对数据的处理有两种抽象。
假设我们要将数据用多个处理器进行处理。处理器为 a、b、c。
我们可以怎么写?
写法一,管线写法,用 linux 的应该比较理解。
function resolve(data, a, b, c) {
const data1 = a(data)
const data2 = b(data1)
const data3 = c(data2)
return data3
}
顺序从左往右。执行顺序是 a -> b -> c。
写法二:形式上的函数套函数,匹配 形式。
function resolve(data, a, b, c) {
return a(b(c(data)))
}
从 形式表现 上,它是 a(b(c(data))),但它的执行顺序是 c -> b -> a。
顺带一提,axios 的拦截器也是从右往左的。
说真的我也不习惯从右往左,但确实有这种流派。就像坐标系也各种流派,什么左手坐标系右手坐标系,什么场景坐标系、纹理坐标系、设备坐标系,花里胡哨的。
它让你用啥你就用啥就行了。