Pri*_*eer 5 stylus node.js express
我正在构建一个小节点应用程序,并使用Express with Jade和Stylus来呈现一些基本的HTMl页面.
我很好奇是否有办法让我将一些变量传递给从Node生成的.styl文件?我很清楚我可以在.styl文件中定义变量,但我需要更加动态.具体来说,我正在寻找一种简单的方法来存储数据库中的一些颜色,让节点获取这些值,然后将它们插入到.styl文件中,以便在页面呈现时传递这些变量.看起来应该这样做但是我缺乏细节.任何帮助表示赞赏.谢谢!
感谢@ebohlman,因为他的建议与我最终实施的建议非常接近.
基本上我试图弄清楚如何在Connect Middleware之上做这个,这就是我想出的:
当做app.configure我使用自定义编译编译函数(键'compile'),如下所示:
app.use(require('stylus')
.middleware({
src: app.root + '/app/public',
compile: compile
})
);
Run Code Online (Sandbox Code Playgroud)
然后我创建了几个函数:
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);
};
Run Code Online (Sandbox Code Playgroud)
然后在.styl文件里面我做:
background-color themeColor1();
Run Code Online (Sandbox Code Playgroud)
themeColor1函数中的三元运算符允许简单的默认值和覆盖.根据示例我花了一些时间来弄清楚API,但似乎这可能是其他人想要知道如何做的解决方案.如果有人对此方法有任何挫折,请告诉我.
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |