【问题标题】:How to write portable image paths in CSS files for a mounted sinatra app?如何在 CSS 文件中为已安装的 sinatra 应用程序编写可移植图像路径?
【发布时间】:2015-06-11 21:34:32
【问题描述】:

背景

您正在编写一个 sinatra(或机架)应用程序,并且希望能够在不更改代码的情况下将其用作独立应用程序或挂载应用程序。

也就是说,您可以自行运行此应用程序,或者您可以将其作为子应用程序安装在某个其他应用程序中,方法是在“config.ru”中执行以下操作:

run Rack::URLMap.new("/" => MainApp.new, 
                     "/my_mounted_app" => MountedApp.new)

一切似乎进展顺利,因为您小心地在所有视图中使用sinatra's url() helper,确保无论您的应用如何或是否安装,都会生成正确的路径。

问题

但现在你想在 CSS 文件中包含一张图片作为背景,你遇到了一个难题:

  1. 在 CSS 文件中使用 url() 辅助方法。这可确保您的图像路径正确且可移植,但现在您的 CSS 文件必须由 sinatra 处理每个请求。
  2. 使用构建过程(可能涉及 SASS 和具有您的应用程序安装路径的一些全局配置文件)来生成具有正确图像路径的 CSS 文件。这也确保了正确的路径,但引入了构建过程的复杂性。

还有第三种更好的选择吗?使用 URLMap 安装应用程序的真正问题是 - 是否有另一种实现安装的方法可以避免这些问题?

同样,目标是:

  1. 完全便携的应用程序,无需任何更改即可安装。
  2. 不需要 sinatra 处理的静态资产。
  3. 没有静态资产构建过程。

【问题讨论】:

  • 在你的 CSS 中使用相对 url 不行吗?
  • 呃,这对我来说不是很尴尬吗?我试过了,它没有用,但事实证明失败是一个错字的结果。这是正确的答案,ty。如果您想完整回复,我会接受。

标签: sinatra rack


【解决方案1】:

您可以在 CSS 中使用相对 URL。

由于 CSS 和图像都位于 public 目录下,因此无论安装整个应用程序,它们之间的相对路径都是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多