将 Clojure 中具有相对路径的静态资源提供给不同的路由
Serving static resources with relative paths in Clojure to different routes
我正在构建 lein new compojure-app
模板。我有一条通往 /
的路线可以正常工作,还有一条通往 /foo/
的路线也可以。在这两个页面之间,只有主体发生了变化,所以我想尽可能多地使用一个通用视图函数(我在 views/layout.clj
中使用默认的 common
)。然而,当通过相对路径提供资源时,比如 css/main.css
,我到 /
的路由工作正常,但是到 /foo/
的路由正在寻找 /foo/css/main.css
而不是在根目录中寻找目录。我如何使用到任意路由的相对路径来提供静态资源?
您需要使用 wrap-base-url
middleware along with include-css
. The wrap-base-url
will set *base-url*
动态变量,它将用于为 include-css
、include-js
或直接使用 to-url
中包含的资源构建 URL。
如果您将应用部署为 servlet 容器中的 war,wrap-base-url
将自动检测您的应用根上下文(例如 /my-app/
)。否则你需要手动提供根路径作为第二个参数。
我正在构建 lein new compojure-app
模板。我有一条通往 /
的路线可以正常工作,还有一条通往 /foo/
的路线也可以。在这两个页面之间,只有主体发生了变化,所以我想尽可能多地使用一个通用视图函数(我在 views/layout.clj
中使用默认的 common
)。然而,当通过相对路径提供资源时,比如 css/main.css
,我到 /
的路由工作正常,但是到 /foo/
的路由正在寻找 /foo/css/main.css
而不是在根目录中寻找目录。我如何使用到任意路由的相对路径来提供静态资源?
您需要使用 wrap-base-url
middleware along with include-css
. The wrap-base-url
will set *base-url*
动态变量,它将用于为 include-css
、include-js
或直接使用 to-url
中包含的资源构建 URL。
如果您将应用部署为 servlet 容器中的 war,wrap-base-url
将自动检测您的应用根上下文(例如 /my-app/
)。否则你需要手动提供根路径作为第二个参数。