196

我刚开始学习 Scala,我要实现的第一件事是一个小型 Web 应用程序。去年我一直在使用Erlang来实现服务器端软件,但我之前从未编写过 Web 应用程序。这将是一次很棒的经历。

除了Lift之外,Scala 是否有网络框架?

不要误会我的意思,Lift 看起来很棒。我只想知道有多少框架,以便我可以在它们之间进行选择。有选择总是一件好事,但我唯一发现的是电梯。

4

18 回答 18

78

我对 Scala 非常感兴趣,但我还没有使用它,因此需要注意的是,我所知道的框架在HRJ 的回答(Lift、Sweet、Slinky)中没有提到:

于 2009-09-28T18:25:51.403 回答
46

我写了一篇关于这个的博客文章。

总而言之,一些选项是:

  1. 电梯
  2. 甜的
  3. 紧身

我终于发现没有一个适合我,并开发了自己的小“框架”。(它还不是开源的)。

于 2009-09-28T18:16:37.390 回答
35

I like Lift ;-)

Play is my second choice for Scala-friendly web frameworks.

Wicket is my third choice.

于 2010-06-18T05:52:47.323 回答
35

以下是框架的转储。这并不意味着我实际上使用了它们:

  • 科伊斯。Scala 的传统 MVC Web 框架。

  • 未过滤。用于在 Scala 中服务 HTTP 请求的工具包。

  • 尤斯卡拉花岗岩

  • 加德尔

  • 蒙多

  • 爱茉莉。Ruby Web 框架 Sinatra 的 Scala 端口

  • 缩放 XML。灵活的 XML 处理方法和与 XML 交互的简化方法。

  • 腰带。基于 Scalaz-HTTP 构建的 Web 应用程序的 Rack 式界面

  • 弗兰克。建立在 Scalaz/Belt 之上的Web 应用DSL

  • 混合位。用于帮助构建网站的 Scala 编程语言框架

  • 回旋曲。使用 Scala 编程语言联合多个独立的开源项目进行应用程序开发。

  • 斯卡拉网络机器。Scala 中 Basho 网络机器的端口,一个基于 REST 的系统,用于构建网络应用程序

  • 保龄球。一个 RESTful、多通道就绪的 Scala Web 框架

于 2010-10-07T15:58:27.627 回答
23

试试Play Framework,它也支持 Scala。

于 2010-06-13T07:00:21.150 回答
8

Scalatra是一个非常有趣的商业部署 Web 框架,其灵感来自 Ruby 的 Sinatra。这是一篇关于它的InfoQ 文章

于 2010-10-07T14:30:19.250 回答
8

必须指出的是,WicketScala也有相当大的兴趣。Wicket 非常适合 Scala。如果您想利用非常成熟的 Wicket 项目及其生态系统(扩展)以及 Scala 的简洁语法和生产力优势,那么这个可能适合您!

也可以看看:

  1. 一些散文

  2. 介绍

  3. 使用 Wicket 和 Scala 的一些经验

  4. 关于将 Scala 闭包绑定到模型的胶水代码项目的公告

于 2009-09-28T18:35:59.287 回答
8

我发现 Unfiltered 非常有趣https://github.com/unfiltered/unfiltered

IttayD的列表中提到了它。

这是关于它的演示 http://unfiltered.lessis.me/#0 和视频http://code.technically.us/post/942531598/doug-tangren-presents-the-unfiltered-toolkit-for

这里还有一篇包含更多信息的文章http://code.technically.us/post/998251172/holding-the-parameter

于 2010-10-08T00:20:42.263 回答
7

起来还蛮甜的。

它现在已准备好生产。它包含:一个很酷的模板框架,在安全时自动重新加载源文件,一个可组合的动作系统,akka awesomeness 等。

它是Typesafe Stack的一部分。

已经在两个项目中使用过它,我可以说它工作得非常顺利,下次你想学习新的 Web 框架时应该考虑一下。

于 2011-09-22T17:43:57.853 回答
5

我倾向于使用 JAX-RS 和Jersey(你可以用 Scala、Java 或 Groovy 编写好的资源 bean)来编写 RESTul Web 应用程序。然后,我使用Scalate使用各种模板语言(JADEScamlSsp(Scala Server Pages)、Mustache等)中的一种来渲染视图。

于 2010-10-08T15:09:03.400 回答
4

Prikrutil,我认为我们在同一条船上。我也是从 Erlang 来到 Scala 的。我非常喜欢Nitrogen,所以我决定创建一个受它启发的 Scala Web 框架。

看看希特鲁姆它的文档非常广泛。从自述文件:

Xitrum 是一个基于 Netty 和 Hazelcast 的异步集群化 Scala Web 框架和 Web 服务器:

  • 它填补了 Scalatra 和 Lift 之间的空白:比 Scalatra 更强大,比 Lift 更易于使用。您可以轻松地创建 RESTful API 和回发。Xitrum 像 Scalatra 一样控制器优先,而不像 Lift 那样视图优先。
  • 本着 JAX-RS 的精神,注释用于 URL 路由。您不必在一个地方声明所有路线。
  • 类型安全,本着 Scala 的精神。
  • 异步,本着 Netty 的精神。
  • 会话可以存储在 cookie 或集群 Hazelcast 中。
  • jQuery Validation 集成用于浏览器端和服务器端验证。i18n 使用 GNU gettext,这意味着与大多数其他解决方案不同,它支持单数和复数形式。
  • 使用 ETag 的条件 GET。

Hazelcast 还提供:

  • 进程内和集群缓存,您不需要单独的缓存服务器。
  • 进程内和集群 Comet,您可以将 Comet 扩展到多个 Web 服务器。

按照教程快速入门。

于 2011-09-22T05:53:14.030 回答
4

有一个新的 Web 框架,称为Scala Web Pages。从网站:

目标听众

Scala Pages Web 框架可能会吸引具有 Java 背景并希望在 Scala 中编写 Web 应用程序的 Web 程序员。重点是 OOP 而不是函数式编程。

特点和特点

  • 遵循模型-视图-控制器范式
  • 基于文本的模板引擎
  • 简单的语法:$variable<?scp-instruction?>
  • 编码/内容检测,能够处理国际文本编码
  • 片段而不是自定义标签
  • 网址重写
于 2010-03-12T05:27:28.323 回答
3

还有 Pinky,它曾经在 bitbucket 上,但被转移到了github 上

顺便说一句,github 是搜索 Scala 项目的好地方,因为那里有很多东西。

于 2009-09-28T18:28:47.070 回答
3

我想将自己的努力添加到此列表中。您可以在这里找到更多信息:

brzy 框架

它处于早期开发阶段,我仍在积极努力。它包括以下功能:

  • 专注于简单性和可扩展性。
  • 集成构建工具。
  • 模块化设计; 一些初始模块包括对 scalate、电子邮件、jms、jpa、squeryl、cassandra、cron 服务等的支持。
  • 简单的 RESTful 控制器和操作。

非常感谢任何和所有反馈。

更新:2011-09-078,我刚刚发布了 0.9.1 版的重大更新。http://brzy.org上有更多信息,其中包括截屏视频。

于 2010-10-28T17:00:14.460 回答
1

Sweet 和 Slinky 似乎都有一年左右无人维护。Sweet Maven repo sweetsoftwaredesign.com 已死,因此甚至无法下载依赖项。

于 2010-12-19T04:37:53.830 回答
1

注意: Spiffy 已过时。

<插头>

漂亮

  • 是用 Scala 编写的
  • 使用了不起的 Akka 库和演员来扩展
  • 使用 servlet API 3.0 进行异步请求处理
  • 是模块化的(更换组件很简单)
  • 使用 DSL 减少不需要的代码
  • 支持 Scalate 和 Freemarker 进行模板化

Spiffy 是一个使用 Scala、Akka(Scala actor 实现)和 Java Servlet 3.0 API 的 Web 框架。它利用异步接口,旨在为 Web 应用程序提供大规模并行和可扩展的环境。Spiffy 的各种组件都基于这样的想法:它们需要是独立的简约模块,可以非常快速地完成少量工作并将请求传递给管道中的下一个组件。在最后一个组件处理完请求后,它通过“完成”请求并将其发送回客户端来向 servlet 容器发出信号。

https://github.com/mardambey/spiffy

< /插头>

于 2011-03-27T01:17:10.870 回答
0

几周前我偶然发现了你的问题,但从那时起我也了解了Circumflex。这是一个很好的、最小的框架,因此很容易学习,而且它也有很好的文档。

除了极简之外,它还声称可以与其他库很好地配合使用,并允许您在需要时使用自己的实现。

于 2011-07-10T16:59:08.710 回答
0

您也可以尝试Context。它被设计成一个 Java 框架,但我已经成功地将它与 Scala 一起使用,也没有任何困难。它是一个基于组件的框架,具有与 Lift 或 Tapestry 相似的属性。

于 2011-04-09T13:38:51.187 回答