【发布时间】:2015-05-08 09:08:54
【问题描述】:
我使用lein new compojure test 创建了一个新的 Compojure Leiningen 项目。 Web服务器由lein repl运行,然后
user=> (use 'ring.adapter.jetty)
user=> (run-jetty test.handler/app {:port 3000})
路由和应用处理程序规范很简单:
(defroutes app-routes
(GET "/*.do" [] "Dynamic page")
(route/not-found "Not Found"))
(def app
(wrap-defaults app-routes site-defaults))
现在,在更改 app-routes 定义中的任何内容(例如,将“动态页面”文本更改为其他任何内容,或修改 URI 匹配字符串)后,我没有在浏览器中获得更新的文本/路由。但是,将app-routes 定义稍微更改为
(defn dynfn [] "Dynamic page fn")
(defroutes app-routes
(GET "/*.do" [] (dynfn))
(route/not-found "Not Found"))
在更改dynfn 的返回值时,我确实获得了动态更新。另外,遵循this article 的建议并将app 定义修改为
(def app
(wrap-defaults #'app-routes site-defaults))
(注意#' 透明地为app-routes 创建一个变量)也有帮助!
为什么会这样?有没有其他方法可以在defroutes 中获得真正的动态行为?
谢谢!
【问题讨论】:
标签: clojure read-eval-print-loop ring compojure