在Node.js中,如何从Jade传递变量到:stylus过滤器?

3

jade 中创建一个变量,我希望 stylus 过滤器使用。

使用 #{var} 似乎不起作用。例如,以下代码:

  - var color1 = 'blue'
  stylus:
    div
      background-color pink
      color #{color1}

会产生以下错误:

/home/data/tnt/server/node/www/tech/cool.jade:2
   1| div
   2|   background-color pink
 > 3|   color #{color1}
   4|
expected "indent", got "outdent"

如何在 stylus 过滤器中让 jade 变量 color1 可见?


“the following breaks”是什么意思?你是否遇到了错误或者输出结果不正确? - nemesv
@nemesv - 谢谢 - 已将错误信息添加到问题中。 - cc young
1个回答

5

过滤器(例如Stylus,Markdown等)在“编译时”执行,仅执行一次。

但是文字替换是在运行时进行的,因此过滤器无法访问变量。

过滤器只能访问原始文本,例如color #{color1}而不是color blue

作为解决方法,您可以创建一个帮助程序,在其中自己执行Stylus模板和呈现,就像多个地方建议的那样(我只找到了使用Markdown过滤器的示例,但过滤器的工作方式相同,因此它们也适用于stylus过滤器):


1
这在某种程度上是有道理的,但并不意味着它很有趣。作为一名程序员,如果我能够说“::stylus”,意思是“解释这个运行时”,而不是必须建立那个帮助方法的基础设施,那将会更容易得多。 - cc young
忘了说谢谢 - 谢谢!在这种情况下,我认为我会让jade编写style部分,而不是转而使用stylus - 这样会简单得多。 - cc young

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接