我可以在手写笔中执行 @import 的反向操作吗?

Can I do the reverse of @import in stylus?

我反复做的一件事是,每次我将一个页面添加到我网站的某个部分时,它有自己的样式(驻留在 .styl 文件中),我必须返回到我的 main.styl 并添加一个 @import 语句。

如果我只有一个布局,我会简单地导入单个 .styl 文件的整个目录,但我经常使用移动和桌面,或者标准和最小布局,这将是相关的能够在适当的 main.styl 文件中仅包含相关的 @import(在我的例子中是 standard.stylminimal.styl)。

是否可以告诉 .styl 文件它的内容应该包含在其他 .styl 文件中?

"reverse import",也就是说,Sass 或 Less 都不支持使用指令说明特定文件应导入另一个文件。

"Glob importing" 也不受任何一个原生支持。然而,对于 Less,这已作为插件实现:https://github.com/just-boris/less-plugin-glob.

Stylus(或我知道的其他预处理器)中没有这样的功能,但您可以通过使用条件和变量来绕过它。对于 Stylus,这可能看起来像这样:

// standard.styl

$context = 'standard'
@import 'lib/*.styl'

// minimal.styl

$context = 'minimal'
@import 'lib/*.styl'

然后您可以通过将所有内容包装在条件中来编写任何包含的文件:

// myBlock.styl

if $context == 'standard'
  .myBlock
    display: block

您甚至可以在一个文件甚至一个块中混合使用不同的上下文。

但是,在我看来,通过对每个变体使用媒体查询通常更容易处理所有这些事情,但也许您的环境不适合它们?那么这种按条件拆分应该可以完美地工作。