我想渲染在每个请求时动态生成的 css。
例如,在 Express.js 我有一条路线:
/clients/:clientId/style.css
当我收到匹配请求时,我想从我的存储库中查找客户端并提取他们的文本颜色。然后我想将此颜色推送到 css 响应中。
是否有可以渲染文本文件的模板引擎,比如 style.less,我可以用 less/stylus 解析?
任何想法,替代策略?
干杯,戈登
如果您还没有意识到这一点,我想您已经意识到了,您可以在 Stylus 中使用define(name, function)
和在CSS中提供动态内容。define(name, variable)
假设您使用 Express 并调用命令./node_modules/express/bin/express -t jade -c stylus
来创建骨架站点,它应该负责模板引擎——Stylus 将处理 CSS,而 Jade(或您选择的 view_engine)处理其余部分;我在这里看不到 view_engine 的重要性(您能否解释一下您对它的评论,以防止在样式标签中插入数据?)
可能是您将样式标签直接嵌入到 html 页面中?如果是这种情况,请尝试将其提取到自己的模板文件中并让 Stylus 拥有它。
如果你想手动设置,你需要这样的东西app.configure()
:
app.use stylus.middleware({
force: true
src: "#{__dirname}/views"
dest: "#{__dirname}/public/css"
compress: true
})
看起来这个 SO 帖子可能有替代策略,具体取决于您的具体需求。
希望这能给你一些想法,如果不是一个完整的解决方案:)
如果它是一个 CSS,你可以将它添加到页面底部,浏览器会选择它并呈现页面