2010-07-24 64 views
64

有用于Clojure的比较构架

几个web框架

,也有一些库处理某些网页开发子任务,如

  • Enlive为模板
  • Hiccup为模板
  • Ring处理与请求/响应
  • ClojureQL持久性较低层次的东西(它似乎并不十分活跃,虽然)

还有数百个Java库可以使用。有些方面已经讨论过heretwo of them compared a bit

我不知道这些框架/组件的成熟程度,范围,易于开发,Django的/ RoR的感觉,等

+0

不要忘记添加Clojure的上线圈在https://github.com/zubairq/coils也立柱 – Zubair 2013-10-03 08:51:50

+3

今天哪里有这样的立场,接近2013年底? – scape 2013-10-08 15:23:11

回答

39

当我第一次开始与Web开发方面的比较,这是使用Clojure。我有没有以前的网页开发经验在所有。在我的生活中,我无法将Compojure推出。我不知道自那时以来(不久之前)初学者的文档是否有所改进,但当时我无法管理它。一位朋友向我指出了胡须,在阅读了自述文件后,我能够将目前状态下的http://try-clojure.org扔在一起。所以,就易用性而言,我认为小胡子为我准备了蛋糕。

但是,如果this在当时已经存在,我可能会唱不同的曲调。

Conjure看起来很酷,尽管与其他框架的不同。鉴于我在网络开发方面的经验非常有限,我对这个问题没有太多的发言权,但是Conjure对我来说有点不合情理。它只是不觉得正确。这可能只是因为我不习惯它做事情的方式。

更新:这是我写这篇文章的一段时间。很多事情都发生了变化。现在没有多少人使用胡子了,虽然它已经足够完整(并且足够简单),但它仍然可以正常工作,但我现在推荐使用Compojure或Noir来代替它。这两个都是目前维护的框架,并且都非常出色。

更新2:Noir已被弃用了很长一段时间,其大部分功能都转移到一个库中,该库专门用于从基于组合/其他基于环的Web框架lib-noir中使用。

+0

感谢您添加到框架列表中,小胡子对我来说是新的 – 2010-07-24 19:29:34

+0

@ [Adam Schmideg]可能还有更多!这些都是我现在能想到的。他们当然是最受欢迎的。 :) – Rayne 2010-07-25 05:59:14

+2

至于更新,小胡子是活着,很好。它并不需要任何维护,并且在Clojure核心的所有变化中我一直是它的开心用户。 Christophe Grand目前正在发布新版本,并提供更丰富的语法和更多功能。 – 2013-02-05 12:11:02

20

我知道这个问题有点过时......但我忍不住建议Noir作为一个非常好的选择。

Noir使用Ring,Compojure和Hiccup的组合完成工作。一探究竟!

+11

Noir现已弃用,请参阅:http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/。作者建议改用Compojure。 – 2013-01-09 09:06:31

2

现场出现了一名新玩家,作为实施REST服务的一个很好的选择是liberator。它可以更容易地将您的数据作为资源公开,同时自动遵守HTTP规范RFC-2616的所有相关要求,并与http-kit和Compojure很好地搭配使用。

很满意http-kit顺便说一句,现场代码重新加载功能很方便。

10

根据框架思考可能是一个错误。更好的方法是从图书馆组件的角度思考,为了拥有最适合您需求的“框架”,您将它们放在一起。

我在过去曾经使用过一些框架。他们中的大多数人做得相当不错,可以让你快速启动并运行基本应用程序。然而,无一例外,我发现他们中的所有人都经常感到沮丧。通常这是由于太多的样板或者只是跳过与您的开发应用程序无关的箍。

刚来Clojure时,我开始寻找框架,但后来意识到这是错误的方法。相反,我发现从一个基本的环形应用程序开始,然后根据需要添加库会好很多。这看起来像是一个更大的学习曲线,但实际上它的效率是一样的,因为你不必被迫学习一堆你经常不需要的框架脚手架。

但是,我发现寻找各种框架非常有用,因为它给了我如何最好地整合一个图书馆和更重要的IMO的想法,你如何最好地构建你的lein project.clj文件以最适合你想要的工作流程。

我发现以下模板非常有用。我不使用其中的任何“是”,但已经从很多人的适应/被盗的想法,开发出最适合我的工作

  • LuminusLuminus templates应用程序提供了一个非常框架广泛的框架。我发现它们对于很多应用程序来说有点“沉重”,但是有一些很好的例子说明如何将各种Clojure库集成到您的应用程序中。主网站也有一些有用的文件。

  • Reagent Project,它包括一个试剂模板提供了一个很好的起点用于使用试剂(react.js)ClojureScript支持的应用程序。我发现这是最简单的ClojureScript库之一,用于创建一个具有良好Javascript集成的应用程序。

  • lein-figwheel是一个非常有趣的模板,它使用figwheel提供clojurescript的动态加载,以便您在修改代码时在浏览器中看到ClojureScript更改。现在许多其他模板已将此功能添加到他们自己的模板中。 Luminus和Reagent模板最初是在Om开发的基础上开发的,现在它们的模板中还集成了Figwheel功能。真正展示了Clojure和ClojureScript对于交互式开发的一些好处。

  • Compojure Template是一个很好的起点。它建立了一个非常基础的基于组合的项目,包含所有基本组合和组合材料。开始使用Clojure Web开发的好方法,因为它很简单,并允许您在淹没所有其他选项之前专注于基本知识。

还有很多其他的模板和框架,其中很多我还没有时间看。现在,我经常从组合模板或试剂模板开始,然后在需要时添加附加位。我通常还包含模板的selmar,并使用Luminus使用的基本相同的配置。

也许为web开发获得一个好的“框架”最重要的部分是试验和理解lein如何工作和lein project.clj文件。拥有一个好的project.clj文件将决定你的工作流程。拥有正确的配置文件,能够以不同的方式启动repl并加载不同的库,这些库允许您启动figwheel或浏览器repl或生成jar等等,都与您的project.clj文件有关。得到这个权利,你的环境将提供你所需要的工作流程。

2

尝试快速Web开发框架道路 https://github.com/zhujinxian/road

(defn render-test [ret tmt] 
    (-> (resp/response "------render----test------") 
    (#(resp/content-type %1 "text/plain")))) 

(defn foo 
    "I don't do a whole lot." 
    [x] 
    (str "来自源码目录的参数:" x)) 

(defn handler [^Integer x] 
    {:$r render-test :text (str "hello world, road goes sucess!" (foo x))}) 

(defn home [req content ^Integer num] 
    {:hiccup "home.clj" :content (str "home" content) :num num}) 

(defroad road (GET "/web-test-0.1.0-SNAPSHOT-standalone/main" handler) 
       (GET "/web-test-0.1.0-SNAPSHOT-standalone/home/:num{\\d+}" home)) 

(defn -main [& args] 
    (log/info "---------log4j test-------") 
    (jetty/run-jetty road {:port 3000}))