我对Clojure的Noir库的意义感到困惑。它似乎是在Compojure框架之上编写的一种库,将defroute重命名为defpage并结束了一天的工作。显然这是一个不公平的简化,但是Noir到底带来了什么?为什么我要使用Noir而不是纯粹的compojure+hiccup呢?
编辑/更新: Noir已被弃用,在此处可以阅读有趣的文章:http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/。
我对Clojure的Noir库的意义感到困惑。它似乎是在Compojure框架之上编写的一种库,将defroute重命名为defpage并结束了一天的工作。显然这是一个不公平的简化,但是Noir到底带来了什么?为什么我要使用Noir而不是纯粹的compojure+hiccup呢?
编辑/更新: Noir已被弃用,在此处可以阅读有趣的文章:http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/。
来自Noir的作者:
Noir并不是[compojure和hiccup]的替代品,更像是对它们的抽象。它诞生于我看到一个真正的Web应用程序如何发展以及在构建http://www.typewire.io时ring/compojure/hiccup堆栈中缺少了什么。此外,正如我在其他评论中提到的那样,我希望它将成为Clojure Web开发的单一“包”,而不是现有的零散组件的拼凑。通过控制所有内容,我可以为帮助人们入门创建一个更加连贯和明确定义的故事。我还可以分享我在Clojure网站维护方面所学到的知识,并希望鼓励避免一些陷阱的模式。
(重点标注为我的翻译)
Compojure是一个小型框架,可以生成基于路由定义的Ring请求/响应处理程序。
Noir增加了会话处理、cookies、模板和部分功能,提供更简单的响应生成方式、表单验证、路由过滤、加密密码、JSON((反)序列化)和自定义状态页面。换句话说,Noir将Compojure、Hiccup和一堆其他“聪明的东西”组合在一个软件包中。