Leiningen、Compojure、Luminus和Ring之间有什么关系?

12

我开始学习Clojure,希望构建一个Web应用程序,但是不知道该使用哪个框架。我在网上搜索了几个小时,找到的所有东西都有点重叠,让我有点困惑。

我有ASP.NET MVC和JavaEE的经验,如果Clojure web编程与这些经验有关,我很乐意听取建议。

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

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的功能。


Luminus并没有扩展Compojure的功能。 - Chiron
@Chiron:我猜你的意思是Luminus主要将其他库(例如lib-noir)绑在一起,而不是自己添加新功能。如果你有其他意思,请随意扩展回答。 - ffriend
1
Ring实际上非常灵活 - 以至于所有其他网络工具都是在其基础上构建的!它不是高级的,也不充满功能。 - amalloy
@amalloy:我刚意识到我把“灵活”用作“功能丰富”的同义词(即开箱即用的灵活性,而不是低级别、只有基本功能),这可能会误导其他用户。如果您不介意,我将使用您的措辞。 - ffriend

8
Leiningen是针对Clojure开发优化的构建工具,主要与Maven仓库交互。例如,您可以从project.clj生成pom.xml文件。
Ring是用于Web应用程序开发的低级API。例如,它使用映射数据结构来包装请求和响应。当然,它也提供处理程序、中间件和其他重要组件。
Compojure提供了一种优雅的路由库。大多数情况下,它与Ring一起使用。
Luminus是许多Clojure库的集合,可帮助您开始在Clojure中开发Web应用程序。

6
这些元素之间的差异已经有了很好的解答,所以我会尝试简要介绍一下我对Clojure替代方案的研究,特别是针对像我这样具有ASP.NET MVC背景的人。我建议你去探索一下这个组合。 Caribou 正如它自己的页面所说:
Caribou是一个动态Web应用程序生态系统,可以轻松地创建生产就绪的Web应用程序。在满足日常需求的火中锤炼而成,Caribou是解决Web开发人员每天面临的问题的解决方案集合。其开发背后的哲学是一次性解决我们遇到的每个问题,并以通用的方式重复使用。任何不必要或妨碍使用的东西都已经被消除了。
我的简历:快速环境,以某种“面向对象”的方式对数据结构进行建模,其中包括模型和数据层。如果你来自.NET,你会发现它更加熟悉,因为它提供了很多现成的东西,甚至还有一个Web界面来操作模型。 Pedestal Pedestal是一组交互库,共同创建了开发特定类型应用程序的路径。它赋予开发人员使用Clojure构建需要实时协作并针对多个平台的互联网应用程序的能力。简而言之:Pedestal为在Clojure中构建丰富客户端Web应用程序提供了更好、更紧密的方式。寻找构建互联网应用程序的标准方法的Clojurists将喜欢Pedestal。他们现在可以塑造一个单一、一致的形式来匹配他们的愿景,而不是从发现的对象中组成艺术品。

我的简历:非常功能化的开发Web应用程序的方法,设计良好且功能强大,但与ASP.NET绝对不熟悉或类似,值得仔细审查。

有点跑题,只是为了完整性而提到Liberator,以防你想要使用Clojure实现REST API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接