【问题标题】:Can I render css dynamically with Express.js?我可以使用 Express.js 动态渲染 css 吗?
【发布时间】:2012-01-26 07:27:32
【问题描述】:

我想渲染在每次请求时动态生成的 css。

例如,在 Express.js 中我有一个路由:

/clients/:clientId/style.css

当我收到匹配的请求时,我想从我的存储库中查找客户端并提取他们的文本颜色。然后我想将此颜色推送到 css 响应中。

是否有可以渲染文本文件的模板引擎,比如 style.less,我可以用 less/stylus 解析?

有什么想法、替代策略吗?

干杯, 戈登

【问题讨论】:

    标签: css less express stylus


    【解决方案1】:

    如果您还没有意识到这一点,我想您已经意识到了,您可以在 Stylus 中使用 define(name, function)define(name, variable),在 CSS 中使用 provide dynamic content

    假设您使用 Express 并将命令 ./node_modules/express/bin/express -t jade -c stylus 调用到 create a skeleton site,它应该处理模板引擎——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
      })
    

    看起来像this SO post may have an alternative strategy,这取决于您的具体需求。

    希望这能给你一些想法,如果不是一个完整的解决方案:)

    【讨论】:

    • 不,我没有意识到!加油加藤。手写笔定义方法是要走的路。有人知道它是否可以在 LESS 中完成吗?
    【解决方案2】:

    如果它是一个 css,你可以将它添加到页面底部,浏览器会选择它并呈现页面

    jQuery include css

    【讨论】:

    • 但是怎么做呢?例如,jade 不允许在样式标签(或脚本标签,顺便说一句)内插入数据。有不同的渲染引擎吗?干杯,戈登
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多