Clojure 黑色vs复合色?

Clojure 黑色vs复合色?,clojure,compojure,noir,Clojure,Compojure,Noir,我很难理解clojure的黑色图书馆的意义。它似乎是一个写在compojure之上的框架,将defroute重命名为defpage并称之为day。显然,这是一种不公平的简化,但黑色到底给餐桌带来了什么呢?为什么我要用黑色而不是普通的compojure+hiccup 编辑/更新: Noir已被弃用,这里有一篇有趣的文章:。来自: 黑色并不是真正的[compojure and hiccup]的替代品,更多的是对它们的抽象。它诞生于看到一个真正的web应用程序是如何发展的,以及我构建的ring/com

我很难理解clojure的黑色图书馆的意义。它似乎是一个写在compojure之上的框架,将defroute重命名为defpage并称之为day。显然,这是一种不公平的简化,但黑色到底给餐桌带来了什么呢?为什么我要用黑色而不是普通的compojure+hiccup

编辑/更新: Noir已被弃用,这里有一篇有趣的文章:。

来自:

黑色并不是真正的[compojure and hiccup]的替代品,更多的是对它们的抽象。它诞生于看到一个真正的web应用程序是如何发展的,以及我构建的ring/compojure/hiccup堆栈中缺少了什么。此外,正如我在另一篇评论中提到的,我希望它将作为Clojure中web开发的单一“包”,而不是试图从现有的部分拼凑起来。通过控制所有部分,我可以创建一个更具凝聚力、定义更明确的故事来帮助人们开始。我还可以分享我在Clojure中维护网站的经验,并希望鼓励避免我陷入某些陷阱的模式


(emphasis mine)

Compojure是一个生成环形请求/响应处理程序的小框架,处理程序是根据您定义的路由选择的


Noir增加了会话处理、cookie、模板和部分的功能,这是一种生成响应、表单验证、路由过滤器、加密密码、JSON(反)序列化和自定义状态页面的更简单方法。换句话说,Noir将Compojure、Hiccup和一堆其他的聪明的东西组合在一个软件包中

您可以随时在webnoir.org网站上查看。除了Noir之外,还有很多附加的功能,Noir维护者自己开发了这个框架

建议使用和:

对于新网站,请使用Compojure和lib noir。这是几乎一样的电池包括作为黑本身曾经!您只需学习如何使用Compojure编写路由。它很简单,就像在黑色中一样简洁。您不必使用ring jetty适配器之类的东西,只需使用lein ring插件即可启动服务器。此外,如果默认情况下利用了Noir,包括hiccup,那么现在就必须明确依赖它。没什么大不了的,对吧?对!


这些“聪明的东西”是否已经通过其他clojure库提供?例如,你所描述的很多东西都可以用compojure、hiccup、sandbar、clj json等来完成。除了现有clojure库的外观之外,Noir还提供了什么新的东西吗?Noir使用现有库并以一种有用的方式将它们粘在一起-这本身就是“新的”,它意味着努力寻找,已经为您完成了各种库的测试和组合。除此之外,它还提供了一些额外的功能(如验证、自定义状态等)。这些源代码准确地向您展示了所提供的功能——如果您开发一个包含compojure、hiccup、sandbar等的web应用程序,您可能会构建这些功能。