diz*_*tar 6 clojure compojure hiccup
我一直在将一些Noir网站转换为Compojure.
我在这里有一个函数来创建页面的布局:
(defn layout [title & content]
(html5
[:head
[:title "My Site | " title]
(include-css "css/main.css")
[:body
[:header
[:h1 (link-to "/" "My Site")]]
content]))
Run Code Online (Sandbox Code Playgroud)
这是功能和路线:
(defn home-page []
(layout
"Home"
[:div [:p "Home Page"]])))
(defn article-list []
(layout
"Article List"
[:div [:p "Article List"]])))
(defroutes app-routes
(GET "/" [] (home-page))
(GET "/article-list" [] (article-list))
Run Code Online (Sandbox Code Playgroud)
当我打开localhost:3000/article-list时,所有CSS规则都可以正常工作.
但是,当我尝试扩展URL路径并将程序更改为:
(defn article-list []
(layout
"Article List"
[:div [:p "Article List"]])))
(defn article-one []
(layout
"Article One"
[:div [:p "Article One"]])))
(defroutes app-routes
(GET "/" [] (home-page))
(GET "/article-list" [] (article-list)
(GET "/article-list/article-one" [] (article-one))
Run Code Online (Sandbox Code Playgroud)
然后转到localhost:3000/article-list/article-one,我得到了所有HTML但CSS规则不再有效.当我检查页面时,css路径包含在<head>元素中,但页面上没有样式.
我已经搜索了这个问题的解决方案,但似乎没有任何关于此问题的文章.我也试过拉出路线让我有:
(defroutes article-routes
(GET "/article-list/article-one" [] (article-one))
(defroutes app-routes
(GET "/" [] (home-page))
(GET "/article-list" [] (article-list)
(context "article-list" [] article-routes)
Run Code Online (Sandbox Code Playgroud)
但我有同样的问题.如何让CSS规则在具有扩展路径的页面上工作?
你的CSS包含在一个相对路径中,这意味着你去localhost:3000/article-list/article-one浏览器的时候正在寻找CSS localhost:3000/article-list/css/main.css.
解决这个问题的最简单方法是将CSS包括在内(include-css "/css/main.css").在/一开始会确保它始终搜索localhost:3000/css/main.css.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |