Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Clojure中使用到不同路由的相对路径服务静态资源_Clojure_Compojure_Ring - Fatal编程技术网

在Clojure中使用到不同路由的相对路径服务静态资源

在Clojure中使用到不同路由的相对路径服务静态资源,clojure,compojure,ring,Clojure,Compojure,Ring,我正在构建新的compojure应用程序的lein模板。我有一条到/的路线,这条路线很好用,还有一条到/foo/的路线也很好用。在这两个页面之间,只有正文发生了变化,因此我希望尽可能多地使用公共视图功能(我在views/layout.clj中使用默认的common)。但是,当通过相对路径(如css/main.css)提供资源时,我到/的路由工作正常,但是到/foo/的路由是查找/foo/css/main.css,而不是查找根目录。如何为静态资源提供指向任意路由的相对路径?您需要使用中间件。wra

我正在构建新的compojure应用程序的
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”)
。很微妙,但这是工作和不工作的区别。