我尝试使用带有when
条件的 mixin 防护,但在编译过程中出现以下错误:
.mixin 未定义
.mixin (@color) when (isstring(@color)) {
//some code
}
.mixin(#008000);
当我删除when
条件时,它会起作用。这里有什么问题?
问题是我们的less-files中有变量,这些变量是在一个编译过程中定义的。但是在另一个编译过程中,这个变量没有定义,因为我们需要一点点动态。
所以我必须检查变量是否已定义。当我重试时
$variables = [
'testColor' => '#fff111',
];
$lessc->setVariables($variables);
$cachedCompile = $lessc->cachedCompile($publicPath . $inputFile);
和
.mixin (@color:none) when (iscolor(@color)) {
color: #fff;
}
.mixin(@testColor);
一切正常。但是当我删除testColor
变量数组中的变量时,它会崩溃,因为它没有被定义。