12

我开始了 Clojure 的新学习阶段。我想构建一个 Web 应用程序,但我不知道该使用哪一个。我在网上搜索了几个小时,我发现的所有东西都相互重叠,我对此有点困惑。

我在 ASP.NET MVC 和 JavaEE 方面有经验,所以如果有什么将 Clojure Web 编程与这些经验联系起来,我很高兴听到。

Leiningen、Compojure、Luminus 和 Ring 是什么关系?

4

3 回答 3

12

Leiningen是一个构建工具。类似于 Java 世界中的 Maven(实际上,它在底层使用了 Maven)。您在 中定义依赖项和配置project.clj,然后运行漂亮的 Leiningen 命令来下载依赖项、编译代码、运行应用程序等等。

Ring是一个基本的 Web 框架。您可以将其与 JavaEE 中的 Servlet 进行比较。它提供了处理请求的基本功能,但不是非常高级或功能齐全。特别是,它需要您自己编写路由调度。

如果您不想弄乱路由,只需使用Compojure。正如它在其GitHub 页面上所述,“Compojure 是一个用于 Ring 的小型路由库,它允许 Web 应用程序由小的独立部分组成”。如果您需要与 Java 世界进行比较,我认为 Spring MVC 非常接近是类似的。

我以前没有听说过Luminus,但它似乎正试图取代Noir(现在已弃用)。Luminus 和 Noir 都建立在 Ring 和 Compojure 之上,并进一步扩展了 Compojure 的功能。

于 2014-01-17T13:36:14.720 回答
8

Leiningen 是针对 Clojure 开发优化的构建工具。它主要与 Maven 存储库交互。例如,您可以从 project.clj 生成 pom.xml 文件

Ring 是用于 Web 应用程序开发的低级 API。例如,它使用映射数据结构来包装请求和响应。当然,它还提供处理程序、中间件和其他重要工件。

Compojure 提供了一个优雅的路由库。大多数时候,它与 Ring 一起使用。

Luminus 是许多 Clo​​jure 库的集合,可帮助您开始在 Clojure 中开发 Web 应用程序。

于 2014-01-17T13:26:35.173 回答
6

这些元素之间的差异已经得到很好的回答,因此我将尝试向您简要介绍一下我对像我这样具有 ASP.NET MVC 背景的人的 Clojure 替代方案的研究。我建议你探索这对夫妇

驯鹿

正如自己的页面所说:

Caribou 是一个动态的 Web 应用程序生态系统,用于以最小的努力打造生产就绪的 Web 居民。Caribou 在日常需求的火焰中锻造而成,是 Web 开发人员每天面临的问题的解决方案集合。其开发背后的理念是解决我们遇到的每一个问题,以一种可以反复重用的通用方式。任何不必要或阻碍的东西都因经常使用而被烧掉。

我的简历:一个以某种“面向对象的方式”对数据结构进行建模的快速环境,其中有模型和数据层。您会发现这来自 .NET,因为它提供了很多开箱即用的东西,甚至是用于使用模型的 Web 界面。

Pedestal 是交互库的集合,它们共同创建了开发特定类型应用程序的途径。它使开发人员能够使用 Clojure 构建需要实时协作并针对多个平台的互联网应用程序。简而言之:Pedestal 为在 Clojure 中构建富客户端 Web 应用程序提供了一种更好、更紧密的方式。寻找构建互联网应用程序的标准方法的 Clojurists 会喜欢 Pedestal。他们现在将能够塑造一个单一的、一致的形式来匹配他们的愿景,而不是用找到的物体来创作艺术。

我的简历:一种非常实用的 Web 应用程序开发方法,设计精良且功能强大,但绝对不熟悉或类似于 ASP.NET,确实值得回顾

稍微提一下Liberator以防万一您想用 Clojure 实现 REST API。

于 2014-01-18T02:09:43.573 回答