将 Less mixin 标记为可选
Mark a Less mixin as optional
Less 让你 mark an import as optional 像这样:
@import (optional) "foo.less";
我有一个可选导入的 Less 文件,其中包含我在父文件中使用的 mixin。
如何将 mixin 的使用标记为可选,以便在导入的 Less 文件不存在时渲染不会失败?
我试过了,计划在可选的 Less imported 文件中设置 @styleguide
,但是无论 @styleguide
的值如何,渲染都会失败,因为它意识到 .registerColors()
没有存在。
& when (@styleguide=true) {
.registerColors( ... arguments ... );
}
我需要使用 Less 2.5.3 的解决方案。
我找到了解决问题的方法,无需将混合宏标记为可选。
- 我重构了
.registerColors()
以接受单个变量;颜色变量名称列表,在我的例子中。
- 我从对传递给 mixin 的单独变量的调用中提取了颜色变量名称。
- 我将对 mixin 的调用移到了可选的 less 文件中。
我将对 mixin 的调用放在一个守卫中以检查变量是否存在:
@registeredColors: false;
& when not ( @registeredColors = false ) {
.registerColors( @registeredColors )
}
这正是我想要的。如果可选的 less 文件不存在,则不会调用 mixin(因为调用在可选的 mixin 中)。如果参数变量不存在,混合也不会被调用,多亏了守卫。
总的来说,这种方法似乎简化了整个工作。
Less 级联中的 Mixin,因此您可以在非可选代码部分的任何位置简单地定义一个空的 mixin。例如:
@import (optional) "some";
div {
.registerColors(red, red 2);
}
// non-optional stuff
.registerColors(...) {}
Demo。
当可选的导入定义同名的混入时,两个混入定义都会被调用。
Less 让你 mark an import as optional 像这样:
@import (optional) "foo.less";
我有一个可选导入的 Less 文件,其中包含我在父文件中使用的 mixin。
如何将 mixin 的使用标记为可选,以便在导入的 Less 文件不存在时渲染不会失败?
我试过了,计划在可选的 Less imported 文件中设置 @styleguide
,但是无论 @styleguide
的值如何,渲染都会失败,因为它意识到 .registerColors()
没有存在。
& when (@styleguide=true) {
.registerColors( ... arguments ... );
}
我需要使用 Less 2.5.3 的解决方案。
我找到了解决问题的方法,无需将混合宏标记为可选。
- 我重构了
.registerColors()
以接受单个变量;颜色变量名称列表,在我的例子中。 - 我从对传递给 mixin 的单独变量的调用中提取了颜色变量名称。
- 我将对 mixin 的调用移到了可选的 less 文件中。
我将对 mixin 的调用放在一个守卫中以检查变量是否存在:
@registeredColors: false; & when not ( @registeredColors = false ) { .registerColors( @registeredColors ) }
这正是我想要的。如果可选的 less 文件不存在,则不会调用 mixin(因为调用在可选的 mixin 中)。如果参数变量不存在,混合也不会被调用,多亏了守卫。
总的来说,这种方法似乎简化了整个工作。
Less 级联中的 Mixin,因此您可以在非可选代码部分的任何位置简单地定义一个空的 mixin。例如:
@import (optional) "some";
div {
.registerColors(red, red 2);
}
// non-optional stuff
.registerColors(...) {}
Demo。 当可选的导入定义同名的混入时,两个混入定义都会被调用。