黑色与复合?

Posted

技术标签:

【中文标题】黑色与复合?【英文标题】:noir vs compojure? 【发布时间】:2012-04-14 13:21:33 【问题描述】:

我无法理解 clojure 的 Noir 库的要点。它似乎是在 compojure 之上编写的一个框架,将 defroute 重命名为 defpage 并称之为一天。显然是不公平的简化,但 Noir 究竟带来了什么?为什么我要使用 Noir 而不是普通的 compojure+hiccup?

编辑/更新: 不推荐使用黑色,有趣的在这里写:http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/。

【问题讨论】:

【参考方案1】:

来自author of Noir himself:

Noir 并不是 [compojure and hiccup] 的真正替代品,更多的是对它们的抽象。它诞生于看到一个真正的 web 应用程序是如何演变的,以及我在构建 http://www.typewire.io 时从 ring/compojure/hiccup 堆栈中缺少什么。另外,正如我在其他 cmets 中提到的,我希望它可以作为一个“包”来开始在 Clojure 中进行 Web 开发,而不必尝试从现有的部分拼凑起来现在就在那里。通过控制所有这一切,我可以创建一个更有凝聚力和明确定义的故事来帮助人们开始。我还可以分享我在 Clojure 中维护网站的经验,并希望鼓励一些模式避免我陷入的一些坑。

(强调我的)

【讨论】:

【参考方案2】:

Noir,框架已由 Noir 维护者本人 deprecated

建议使用Compojure 和lib-noir:

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

Compojure lib-noir

【讨论】:

【参考方案3】:

Compojure 是一个小型框架,可生成 Ring 请求/响应处理程序,其中处理程序是根据您定义的路由选择的。

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

【讨论】:

所有这些“聪明的东西”是否已经可以通过其他 clojure 库获得?例如,您所描述的大部分内容都可以使用 compojure、hiccup、sandbar、clj-json 等来完成。除了现有 clojure 库的外观之外,Noir 是否提供了任何新的东西? Noir 使用现有的库并以一种有用的方式将它们粘合在一起 - 这本身就是“新的”,这意味着已经为您完成了查找、测试和组合各种库的工作。除此之外,它还提供了一些额外的功能(例如验证、自定义状态等)。源代码向您展示了所提供的确切内容 - 如果您使用组合、打嗝、沙条等开发 Web 应用程序,无论如何您都可能会构建这些功能。github.com/ibdknox/noir【参考方案4】:

您可以随时在 webnoir.org 网站上查看API。除了defpage,还有很多附加功能。

【讨论】:

以上是关于黑色与复合?的主要内容,如果未能解决你的问题,请参考以下文章

Spring OneToMany 与复合键的关系与另一个具有复合键的关系

CSSCSS 复合选择器 ① ( 基础选择器与复合选择器 | 后代选择器 )

mysql的联合主键与复合主键区别

量子计算:复合系统与联合测量

如何使用greendao进行与条件复合查询

mysql 复合 唯一 索引