我听说过两个基于 Clojure 的 Web 应用程序框架:Webjure 和 Compojure。有人可以告诉我哪个更好吗?
8 回答
到目前为止,Compojure 对我来说效果很好。我喜欢设计的简单性、灵活性以及它鼓励良好的惯用功能风格的事实。
示例服务器:
(use 'compojure)
(defroutes my-app
(GET "/index.html"
(html
[:h1 "Hello World!!"]
[:body "This is some text"]))
(ANY "*"
[404 "Page not found"]))
(run-server {:port 80}
"/*" (servlet my-app))
请注意,Compojure 在内部使用 Ring。
现在您可以将Ring添加到列表中。所有这些框架都是非常新的,并且可能会迅速发展(或消亡),但 Compojure 似乎确实是过去 6 个月左右开发得最活跃的。
“更好”是一个过于主观的问题,无法得到明确的答案。尝试所有这些,看看什么有效。
I second Rayne's recommendation on Moustache.
Right now, we are using Ring (base layer, middleware), Moustache (routing), Hiccup (html generation). We just began using Compass for CSS (http://compass-style.org/). So far, I'm happy with this collection of small libraries rather than a big "complete stack" framework (Django, Rails, ect...).
Compojure 似乎现在最受关注。不一定代表质量,但眼睛最多的可能会发展最快。
还有我在TryClojure中使用的Mustache和 Ring。这真是太棒了。
Compojure 基于 Ring,这是一个低级框架,不会尝试隐藏 HTTP 的大部分内容。它类似于 WSGI (Python) 或 Rack (Ruby)。Ring 有一个中间件的概念,即可以对 HTTP 请求和/或响应做一些有意义的事情的小段代码,例如转储头信息、管理 cookie 等。Compojure 是一个更高级别的框架,有点类似于 Ruby 的 Sinatra。它的目的是为 Web 应用程序开发人员面临的大多数任务提供方便的 API(或 DSL,如果您愿意的话)。它通常与诸如 Hiccup 之类的 HTML 生成库一起使用。
在过去的几个月里,我没有听到太多关于 Webjure 的消息,我不确定它是否正在积极开发中(但我有兴趣了解更多信息)。它先于 Ring,AFAICT,它似乎已成为 Clojure Web 框架的某种标准。
我一直在使用 Compojure 构建一个供我自己使用的项目,并且效果很好。它并没有真正妨碍您,让您专注于重要的事情,即您的问题领域。该项目大约有 1100 行 clojure,只是为了让您了解大小。