Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Frameworks Clojure web框架的比较_Frameworks_Clojure_Comparison_Web Frameworks - Fatal编程技术网

Frameworks Clojure web框架的比较

Frameworks Clojure web框架的比较,frameworks,clojure,comparison,web-frameworks,Frameworks,Clojure,Comparison,Web Frameworks,Clojure有一些web框架 还有一些用于处理某些web开发子任务的库,例如 模板制作 模板制作 通过请求/响应处理较低级别的内容 对于持久性(尽管它看起来不是很活跃) 还有数百个Java库可供使用。一些方面已经讨论和讨论过 我想知道这些框架/组件在成熟度、范围、易开发性、Django/RoR感觉等方面的比较情况。当我第一次开始web开发时,是Clojure。我以前在网络开发方面没有任何经验。以我的生命来说,我想不出这是什么。我不知道从那时起,初学者文档是否得到了改进(这不是很

Clojure有一些web框架

还有一些用于处理某些web开发子任务的库,例如

  • 模板制作
  • 模板制作
  • 通过请求/响应处理较低级别的内容
  • 对于持久性(尽管它看起来不是很活跃)
还有数百个Java库可供使用。一些方面已经讨论和讨论过


我想知道这些框架/组件在成熟度、范围、易开发性、Django/RoR感觉等方面的比较情况。

当我第一次开始web开发时,是Clojure。我以前在网络开发方面没有任何经验。以我的生命来说,我想不出这是什么。我不知道从那时起,初学者文档是否得到了改进(这不是很久以前的事),但当时我无法管理它。一位朋友把我的手指指向小胡子,在阅读了自述之后,我能够把它当前的状态拼凑起来。所以,就易用性而言,我认为小胡子是我的首选

然而,如果当时存在,我可能会唱不同的曲调

魔术师看起来很酷,尽管与其他框架有很大不同。考虑到我在web开发方面的经验非常有限,我在这件事上没有太多发言权,但魔术师对我来说有点不开放。只是感觉不对。可能只是因为我不习惯它做事的方式

更新:我写这篇文章已经有一段时间了。很多事情都变了。现在已经没有多少人使用小胡子了,而且它也没有得到积极的维护,尽管它已经足够完整(也足够简单)了,它可能仍然可以使用,但我现在建议改用Compojure或Noir。这两个都是当前维护的框架,并且都非常出色


更新2:Noir已经被弃用了很长一段时间,它的大部分功能都转移到了一个库中,该库设计用于compojure/其他名为的基于环的web框架。

我知道这个问题有点过时了。。。但我忍不住提出了一个非常好的选择


Noir使用Ring、Compojure和Hiccup的组合来完成工作。看看

正如比约恩·林克维斯特在评论中提到的,黑啤酒已经死了。细节


取而代之的是,考虑使用和./P>< P>一个新的玩家出现在场景中,作为实现REST服务的一个很好的替代方案是。它可以更容易地将数据公开为资源,同时自动遵守HTTP规范的所有相关要求,并可以很好地使用和Compojure


顺便说一句,使用http工具包非常满意,实时代码重新加载功能非常方便。

从框架的角度考虑可能是一个错误。更好的方法是根据您组合在一起的库组件进行思考,以获得最适合您需求的“框架”

我过去使用过很多框架。它们中的大多数在让您快速启动和运行基本应用程序方面做得相当不错。然而,毫无例外,我发现所有的人都经常感到沮丧。这通常是由于太多的样板文件或只是需要跳转,而这些与您开发的应用程序无关

第一次来到Clojure时,我开始寻找框架,但后来意识到这是错误的方法。相反,我发现最好从一个基本的环应用程序开始,然后根据需要添加库。这看起来是一个更大的学习曲线,但事实上,它也同样有效,因为您不必学习通常不需要的一堆框架搭建

但是,我发现查看各种框架非常有用,因为它让我了解了如何最好地集成库,更重要的是,我还了解了如何最好地构建lein project.clj文件,以最适合您想要的工作流

我发现以下模板非常有用。我没有“按原样”使用它们中的任何一个,但我从它们中采纳了/窃取了一些想法,以开发最适合我正在开发的应用程序的框架

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

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

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

  • 这是一个很好的起点。它建立了一个非常基本的基于compojure的项目,包含所有基本的环和compojure内容。从Clojure web开发开始的好方法,因为它很简单,允许您在淹没在所有其他选项之前专注于基础

还有许多其他模板和框架,其中许多我还没有时间看。现在,我通常从compojure模板或试剂模板开始,然后在需要时添加额外的位。我通常还包括用于模板的selmar,并使用与Luminus使用的配置基本相同的配置

(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}))