我无法理解 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 and hiccup] 的替代品,更多的是对它们的抽象。它诞生于看到一个真正的 web 应用程序是如何演变的,以及在我构建http://www.typewire.io时 ring/compojure/hiccup 堆栈中缺少什么。此外,正如我在其他评论之一中提到的,我希望它将作为在 Clojure 中开始 Web 开发的单一“包”,而不必尝试从现有的部分拼凑起来。通过控制这一切,我可以创建一个更有凝聚力和定义明确的故事来帮助人们开始。我还可以分享我在 Clojure 中维护网站方面所学到的知识,并希望鼓励那些避免我陷入某些坑的模式。
(强调我的)
Compojure 是一个小型框架,可生成 Ring 请求/响应处理程序,其中处理程序是根据您定义的路由选择的。
Noir 增加了会话处理、cookie、模板和部分功能,一种更简单的生成响应的方法、表单验证、路由过滤器、加密密码、JSON(反)序列化和自定义状态页面。换句话说,Noir 将 Compojure、Hiccup 和一堆其他聪明的东西组合在一个包中。
您可以随时在 webnoir.org 网站上查看API 。除此之外还有很多附加功能defpage
。