Clojure中的反向路由/URL生成?

Clojure中的反向路由/URL生成?,url,clojure,routes,Url,Clojure,Routes,在Clojure中进行路由和URL生成的一些好方法(库或代码)是什么 我查看了Compojure的源代码,但没有看到它的路由也用于URL生成的迹象。外面还有什么 如果你用证据和/或经验来支持,一个说“没有这样的图书馆”的答案实际上是非常有用的 这个问题的动机来自“Rails路由器识别URL并将其发送给控制器的操作。它还可以生成路径和URL,避免在视图中硬编码字符串。” 亲爱的你:我知道有人(也许是你?)想说,“不要担心URL的生成;只需为URL的硬编码字符串”。是的,我知道我能做到,但这并不构成

在Clojure中进行路由和URL生成的一些好方法(库或代码)是什么

我查看了Compojure的源代码,但没有看到它的路由也用于URL生成的迹象。外面还有什么

如果你用证据和/或经验来支持,一个说“没有这样的图书馆”的答案实际上是非常有用的

这个问题的动机来自“Rails路由器识别URL并将其发送给控制器的操作。它还可以生成路径和URL,避免在视图中硬编码字符串。”


亲爱的你:我知道有人(也许是你?)想说,“不要担心URL的生成;只需为URL的硬编码字符串”。是的,我知道我能做到,但这并不构成对这个问题的回答这不是一个关于路由和URL生成相结合的智慧或利弊的问题。这是关于如何做到这一点的?

的服务层负责路由和URL生成;此功能在Destale文档的一节中进行了描述。

我已经编写了一个compojure路由宏的最小替换,它允许您命名路由模式并为它们生成URL。就在我刚刚遇到的,看起来就是这样的。它是一个与Compojure完全兼容的小型库,提供了一种定义可以反向运行的路由的方法

从他们的文档中,您可以定义如下路线:

(defroute document "/documents/:document-id")
将生成两个辅助函数:

(document-path :document-id "123")
;; => "/documents/123"

(with-base-url "https://myservice.com"
   (document-url :document-id "123"))
;; => "https://myservice.com/documents/123"

很久以后,Clojure生态系统发生了很大的变化:

  • 基座可以做到这一点(但需要购买其他东西)
  • 只做您所描述的,并且与其他库进行了很好的比较
来自bidi自述文件,这里是一个比较(使用
runcode
按钮): (我这样做是为了使用HTML,因为stackoverflow标记没有表支持)


图书馆
clj
cljs
语法
同构?
自给自足的?
可扩展的?
✔
宏
✔
✔
宏
✔
✔
宏
✔
✔
✔
资料
✔
✔
资料
✔
✔
✔
宏
✔
✔
✔
✔
✔
资料
✔
✔
✔
✔
宏
✔
比迪
✔
✔
资料
✔
✔
✔