Node.js 节点应用程序变量传递到手写笔文件

Node.js 节点应用程序变量传递到手写笔文件,node.js,express,stylus,Node.js,Express,Stylus,我正在构建一个小节点应用程序,并使用带有Jade和手写笔的Express来呈现一些基本的HTMl页面 我很好奇是否有办法将一些变量传递到从节点生成的.styl文件中?我很清楚,我可以在.styl文件中定义变量,但我需要更加动态。具体地说,我正在寻找一种简单的方法来在db中存储一些颜色,让node获取这些值,然后将它们插入到.styl文件中,以便在呈现页面时传入这些变量。这似乎是可以做到的,但我缺乏细节。感谢您的帮助。谢谢 您可以使用触控笔API的函数设置触控笔变量,并使JS函数对其可用。感谢@e

我正在构建一个小节点应用程序,并使用带有Jade和手写笔的Express来呈现一些基本的HTMl页面


我很好奇是否有办法将一些变量传递到从节点生成的.styl文件中?我很清楚,我可以在.styl文件中定义变量,但我需要更加动态。具体地说,我正在寻找一种简单的方法来在db中存储一些颜色,让node获取这些值,然后将它们插入到.styl文件中,以便在呈现页面时传入这些变量。这似乎是可以做到的,但我缺乏细节。感谢您的帮助。谢谢

您可以使用触控笔API的函数设置触控笔变量,并使JS函数对其可用。

感谢@ebohlman,因为他的建议接近我最终实现的内容

基本上,我一直在试图找出如何在Connect中间件上实现这一点,下面是我的想法:

在执行app.configure时,我使用了自定义编译函数(键“compile”),如下所示:

然后我创建了两个函数:

var stylus = require('stylus');
var mylib = function(style){
  style.define('themeColor1', function(){
    //call to the db that returns a color
    color = 'blue';
    color = color ? color : 'orange';
    return new stylus.nodes.Literal(color);
  });
};

var compile = function(str, path) {    
  return stylus(str)
    .use(mylib);
};
然后在.styl文件中,我执行以下操作:

background-color themeColor1();

themeColor1功能中的三元运算符允许轻松设置默认值和覆盖。根据这些示例,我花了一些时间才弄明白API,但似乎这可能是其他人想知道的解决方案。如果有人对这种方法有任何缺点,请告诉我

您知道如何在不创建函数的情况下将变量从节点传递到手写笔吗。我在这里看到了.define()的答案,但它似乎对我不起作用。我发现
Literal
没有按预期工作,我不得不使用
Ident
background-color themeColor1();