我开始了 Clojure 的新学习阶段。我想构建一个 Web 应用程序,但我不知道该使用哪一个。我在网上搜索了几个小时,我发现的所有东西都相互重叠,我对此有点困惑。
我在 ASP.NET MVC 和 JavaEE 方面有经验,所以如果有什么将 Clojure Web 编程与这些经验联系起来,我很高兴听到。
Leiningen、Compojure、Luminus 和 Ring 是什么关系?
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 的功能。
Leiningen 是针对 Clojure 开发优化的构建工具。它主要与 Maven 存储库交互。例如,您可以从 project.clj 生成 pom.xml 文件
Ring 是用于 Web 应用程序开发的低级 API。例如,它使用映射数据结构来包装请求和响应。当然,它还提供处理程序、中间件和其他重要工件。
Compojure 提供了一个优雅的路由库。大多数时候,它与 Ring 一起使用。
Luminus 是许多 Clojure 库的集合,可帮助您开始在 Clojure 中开发 Web 应用程序。
这些元素之间的差异已经得到很好的回答,因此我将尝试向您简要介绍一下我对像我这样具有 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。