【问题标题】:Node app variables passed into stylus file节点应用程序变量传递到手写笔文件
【发布时间】:2012-09-24 22:38:12
【问题描述】:

我正在构建一个小节点应用程序,并使用 Express 与 Jade 和 Stylus 来呈现一些基本的 HTMl 页面。

我很好奇是否有办法将一些变量传递到从 Node 生成的 .styl 文件中?我很清楚我可以在 .styl 文件中定义变量,但我需要更加动态。具体来说,我正在寻找一种简单的方法来在数据库中存储一些颜色,让节点获取这些值,然后将它们插入到 .styl 文件中,以便在呈现页面时传递这些变量。看起来应该这样做-可以,但我缺乏细节。任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: node.js express stylus


    【解决方案1】:

    感谢@ebohlman,因为他的建议与我最终实施的很接近。

    基本上我试图弄清楚如何在连接中间件之上执行此操作,这就是我想出的:

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

    app.use(require('stylus')
      .middleware({
        src: app.root + '/app/public',
        compile: 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
    【解决方案2】:

    您可以使用 Stylus API 的 define() 函数来设置 Stylus 变量并使其可以使用 JS 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      相关资源
      最近更新 更多