有没有更干净的方式编写此代码?只是.trim()语句有所不同。

if (imageOptions.trim) {
    // Trim
    gm(imageBuffer, 'image.' + imageOptions.imageFormat)
        .gravity(imageOptions.gravity)
        .resize(imageOptions.imageWidth, imageOptions.imageHeight, '^')
        .crop(imageOptions.imageWidth, imageOptions.imageHeight)
        .trim()
        .toBuffer(imageOptions.imageFormat.toUpperCase(), callback);
}
else {
    // No trim
    gm(imageBuffer, 'image.' + imageOptions.imageFormat)
        .gravity(imageOptions.gravity)
        .resize(imageOptions.imageWidth, imageOptions.imageHeight, '^')
        .crop(imageOptions.imageWidth, imageOptions.imageHeight)
        .toBuffer(imageOptions.imageFormat.toUpperCase(), callback);
}


额外的问题:这些“链接”方法调用的正确术语是什么?

最佳答案

您可以将这些方法调用的结果分配给变量,然后有条件,无需完整地编写整个链:

var img = gm(...)
            .gravity(..)
            .resize(..)
            .crop(..);

if (imageOptions.trim) {
    img.trim();
}

img.toBuffer(..);


这些事情称为链接方法调用。

08-28 20:16