compojure是对ring的简单封装(url路由,一些req map的处理和一些middleware预设)
noir在compojure上更进一步,对规模稍微大一点的项目更实际一些
最直接的比如在noir里,url-pattern和handler通过defpage写在一起,而在compojure里通常是分开写再到route
里注册到一起,这个过程让人想起什么struts.xml之类的东西
这是我的理解。
不过无伤大雅的问题,我很不喜欢noir把jetty-adapter的依赖以及代码生成出来,我还是倾向通过lein-ring打war包的方式,
J2EE遗毒比较重。
> > 最近用compojure,但官方推荐的是 noir,然后去了解了一下。大家不知对他们有什么看法保存文章到麦库关闭工具条
(defn render-test [ret tmt] (-> (resp/response "------render----test------") (#(resp/content-type %1 "text/plain")))) (defn foo "I don't do a whole lot." [x] (str "来自源码目录的参数:" x)) (defn handler [^Integer x] {:$r render-test :text (str "hello world, road goes sucess!" (foo x))}) (defn home [req content ^Integer num] {:hiccup "home.clj" :content (str "home" content) :num num}) (defroad road (GET "/web-test-0.1.0-SNAPSHOT-standalone/main" handler) (GET "/web-test-0.1.0-SNAPSHOT-standalone/home/:num{\\d+}" home)) (defn -main [& args] (log/info "---------log4j test-------") (jetty/run-jetty road {:port 3000}))