在Clojure中使用到不同路由的相对路径服务静态资源
我正在构建新的compojure应用程序的在Clojure中使用到不同路由的相对路径服务静态资源,clojure,compojure,ring,Clojure,Compojure,Ring,我正在构建新的compojure应用程序的lein模板。我有一条到/的路线,这条路线很好用,还有一条到/foo/的路线也很好用。在这两个页面之间,只有正文发生了变化,因此我希望尽可能多地使用公共视图功能(我在views/layout.clj中使用默认的common)。但是,当通过相对路径(如css/main.css)提供资源时,我到/的路由工作正常,但是到/foo/的路由是查找/foo/css/main.css,而不是查找根目录。如何为静态资源提供指向任意路由的相对路径?您需要使用中间件。wra
lein
模板。我有一条到/
的路线,这条路线很好用,还有一条到/foo/
的路线也很好用。在这两个页面之间,只有正文发生了变化,因此我希望尽可能多地使用公共视图功能(我在views/layout.clj
中使用默认的common
)。但是,当通过相对路径(如css/main.css
)提供资源时,我到/
的路由工作正常,但是到/foo/
的路由是查找/foo/css/main.css
,而不是查找根目录。如何为静态资源提供指向任意路由的相对路径?您需要使用中间件。wrap-base-url
将设置动态变量,用于为包含css
、包含js
或直接使用到url
的资源构建url
如果将应用程序部署为servlet容器中的war,
wrap base url
将自动检测应用程序根上下文(例如/my app/
)。否则,您需要手动为其提供根路径作为第二个参数。更清楚一点:传递给include css
的字符串必须以/
开头。换句话说,不要这样做:(包括css“css/main.css”)
。相反,要这样做:(包括css)/css/main.css”)
。很微妙,但这是工作和不工作的区别。