重新加载 Clojure Code/Routes - 使用符号与 var 的问题
Reloading Clojure Code/Routes - Issue with using the symbol vs. var
我是 Clojure 的新手,正在尝试设置一些简单的 Web 路由。我希望路由重新加载开发中的所有关联代码,而不是生产中的代码。
我只能通过使用 var 的路径来实现它,而不是实际的符号。有人可以解释我是否做错了吗?如果不是,为什么需要 var?
(def app-handler
(let [formats [:json-kw :edn :yaml-kw :yaml-in-html :transit-json :transit-msgpack]
wrapped-api (wrap-restful-format #'routes/api-routes :formats formats)
combined-routes (compojure.core/routes wrapped-api #'routes/html-routes)
with-defaults (wrap-defaults combined-routes api-defaults)]
(if (is-dev?)
; Development
(wrap-reload with-defaults)
; Production
with-defaults)))
(注意上面的 #'routes/api-routes
和 #'routes/html-routes
)。
以更详细描述的方式 ,服务器最终会在传入路由函数时捕获它们,如果您提供 var,这将确保服务器使用任何更新的定义。
这被认为是在开发过程中提供路由或处理函数的正常方式,因此您无需重新启动网络服务器进程即可看到更新的定义。
我是 Clojure 的新手,正在尝试设置一些简单的 Web 路由。我希望路由重新加载开发中的所有关联代码,而不是生产中的代码。
我只能通过使用 var 的路径来实现它,而不是实际的符号。有人可以解释我是否做错了吗?如果不是,为什么需要 var?
(def app-handler
(let [formats [:json-kw :edn :yaml-kw :yaml-in-html :transit-json :transit-msgpack]
wrapped-api (wrap-restful-format #'routes/api-routes :formats formats)
combined-routes (compojure.core/routes wrapped-api #'routes/html-routes)
with-defaults (wrap-defaults combined-routes api-defaults)]
(if (is-dev?)
; Development
(wrap-reload with-defaults)
; Production
with-defaults)))
(注意上面的 #'routes/api-routes
和 #'routes/html-routes
)。
以更详细描述的方式
这被认为是在开发过程中提供路由或处理函数的正常方式,因此您无需重新启动网络服务器进程即可看到更新的定义。