黑色 vs Compojure?

18

我对Clojure的Noir库的意义感到困惑。它似乎是在Compojure框架之上编写的一种库,将defroute重命名为defpage并结束了一天的工作。显然这是一个不公平的简化,但是Noir到底带来了什么?为什么我要使用Noir而不是纯粹的compojure+hiccup呢?

编辑/更新: Noir已被弃用,在此处可以阅读有趣的文章:http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/

4个回答

17

Noir框架已经被Noir维护者本人弃用

建议使用Compojurelib-noir

对于新网站,请使用Compojure和lib-noir。这几乎与Noir本身包含的内容一样!您只需要学习如何使用Compojure编写路由。这很容易,就像在Noir中一样简洁。您不必使用ring-jetty-adapter等工具,只需使用lein-ring插件启动服务器即可。此外,如果您利用Noir默认包含hiccup的功能,现在就必须有一个明确的依赖项。没关系,对吧?对啊!


17

来自Noir的作者:

Noir并不是[compojure和hiccup]的替代品,更像是对它们的抽象。它诞生于我看到一个真正的Web应用程序如何发展以及在构建http://www.typewire.io时ring/compojure/hiccup堆栈中缺少了什么。此外,正如我在其他评论中提到的那样,我希望它将成为Clojure Web开发的单一“包”,而不是现有的零散组件的拼凑。通过控制所有内容,我可以为帮助人们入门创建一个更加连贯和明确定义的故事。我还可以分享我在Clojure网站维护方面所学到的知识,并希望鼓励避免一些陷阱的模式。

(重点标注为我的翻译)


15

Compojure是一个小型框架,可以生成基于路由定义的Ring请求/响应处理程序。

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


所有这些“聪明的东西”是否已经通过其他Clojure库可用?例如,您所描述的相当多的内容可以使用compojure、hiccup、sandbar、clj-json等完成。除了现有的Clojure库外,Noir是否提供了任何新功能? - Kevin
6
Noir使用现有库并以有用的方式将它们粘合在一起 - 这本身就是“新”的,这意味着为您完成了查找、测试和组合各种库的工作。除此之外,它还提供了一些额外的功能(如验证、自定义状态等等)。源代码会准确地显示所提供的功能 - 如果使用compojure、hiccup、sandbar等开发Web应用程序,则可能会自己构建这些功能。https://github.com/ibdknox/noir - Gert

0
您可以随时在webnoir.org网站上查看API。除了defpage之外,还有很多其他的功能增强。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接