成熟的Clojure Web框架目前有哪些选择?我正在寻找某种特征矩阵,告诉我流行的框架支持什么程度,包括:
响应模板(用Clojure或其他标记编写的响应 - 例如像带有Tiles的JSP)
HTTP会话
REST,自动将URL映射到action-functions和params
HTML表单(params可用作map,错误处理,验证)
应用程序流(从Java框架中获知 - 请求处理程序返回最终由呈示器处理的操作标识符)
Michał Marcz.. 33
也许我的回答是什么是在Clojure中开发RESTful Web服务的良好起点?关于SO的问题可能对你有所帮助.它提到了Clojure的一些重要的Web库(带有链接和简短的摘要).我想在此重申的关键点在答案的第一段中说明:
首先,我认为你不太可能在Clojure中找到一个单独的收缩包解决方案来做所有这些(除了通过互操作使用的Java库的形式).什么成为Clojure的标准Web堆栈包含许多人们以各种方式混合和匹配的库(因为他们很乐意倾向于完全兼容).
为此我要补充一点,你可能不应该期望用Java可能知道的那种"应用程序流程"处理事情(或者如果你认为你真的需要它,你可能不得不推出自己的lib来支持它!).不过,这很好,因为人们似乎对Ring的处理程序非常满意,这是一种功能更高,中间件更友好的方法.
要解决你的子弹:
响应模板:
有许多特定于Clojure的解决方案,包括Enlive和Hiccup(Enlive是一个非常强大的HTML抓取/模板/转换引擎; Hiccup是一个用于在Clojure中编写HTML的DSL,具有快速渲染的优良特性).此外,这可能是下载到Java并使用像StringTemplate这样的东西的完美意义的地方.这甚至可以阻止模板和逻辑的混合!(我相信Stuart Halloway已经提到Relevance - 他的公司 - 在他们的工作中使用这个策略并且在它上面取得了很大的成功.)
HTTP会话我认为
这将是Sandbar.作者已经开始了一系列关于它的博客,看起来非常有前景.
REST自动将URL映射到动作函数和参数
这是Ring&Compojure和/或Mustache.见下文.
HTML表单(params可用作map,错误处理,验证)
如上所述.
应用程序流程(从Java框架中获知 - 请求处理程序返回最终由渲染器处理的操作标识符)
如上所述,并不是人们在Clojure中所做的事情.
作为学习Clojure网络堆栈的起点,Ring的作者Mark McGranaghan撰写的Ring指南非常有用.Compojure的作者James Reeves有一些关于Compojure的文档.也许我最近的回答是什么是组合路线背后的"大创意"?问题可能也有帮助.Ring的资料还包括一份优秀的SPEC文件.
也许我的回答是什么是在Clojure中开发RESTful Web服务的良好起点?关于SO的问题可能对你有所帮助.它提到了Clojure的一些重要的Web库(带有链接和简短的摘要).我想在此重申的关键点在答案的第一段中说明:
首先,我认为你不太可能在Clojure中找到一个单独的收缩包解决方案来做所有这些(除了通过互操作使用的Java库的形式).什么成为Clojure的标准Web堆栈包含许多人们以各种方式混合和匹配的库(因为他们很乐意倾向于完全兼容).
为此我要补充一点,你可能不应该期望用Java可能知道的那种"应用程序流程"处理事情(或者如果你认为你真的需要它,你可能不得不推出自己的lib来支持它!).不过,这很好,因为人们似乎对Ring的处理程序非常满意,这是一种功能更高,中间件更友好的方法.
要解决你的子弹:
响应模板:
有许多特定于Clojure的解决方案,包括Enlive和Hiccup(Enlive是一个非常强大的HTML抓取/模板/转换引擎; Hiccup是一个用于在Clojure中编写HTML的DSL,具有快速渲染的优良特性).此外,这可能是下载到Java并使用像StringTemplate这样的东西的完美意义的地方.这甚至可以阻止模板和逻辑的混合!(我相信Stuart Halloway已经提到Relevance - 他的公司 - 在他们的工作中使用这个策略并且在它上面取得了很大的成功.)
HTTP会话我认为
这将是Sandbar.作者已经开始了一系列关于它的博客,看起来非常有前景.
REST自动将URL映射到动作函数和参数
这是Ring&Compojure和/或Mustache.见下文.
HTML表单(params可用作map,错误处理,验证)
如上所述.
应用程序流程(从Java框架中获知 - 请求处理程序返回最终由渲染器处理的操作标识符)
如上所述,并不是人们在Clojure中所做的事情.
作为学习Clojure网络堆栈的起点,Ring的作者Mark McGranaghan撰写的Ring指南非常有用.Compojure的作者James Reeves有一些关于Compojure的文档.也许我最近的回答是什么是组合路线背后的"大创意"?问题可能也有帮助.Ring的资料还包括一份优秀的SPEC文件.
由于最初询问/回答了这个问题,Noir网络框架已经成为一个很有前景的解决方案.
它使用打嗝作为模板部分,但提供了一个更完整的框架.
Noir主页的基本代码示例:
(ns my-app (:use noir.core) (:require [noir.server :as server])) (defpage "/welcome" [] "Welcome to Noir!") (server/start 8080)
我会建议你使用Luminus,不是因为它的名字很棒,而且还有它的功能.
由于Noir不再维护,我不建议您使用它.从一开始就从ring&Compojure开始构建自己的框架也是一个不错的选择.