有哪些Scala网络框架可用?[关闭]


195

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

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

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

Answers:


77

我对Scala很有兴趣,但是我还没有使用过,因此,需要注意的是,HRJ的答案(Lift,Sweet,Slinky)中没有提到我所知道的框架:


3
有趣。迄今为止,Lift是宣传最广泛的:很好奇您并不熟悉它。
mcherm

13
注释声明“ ...我知道HRJ并没有提及...” HRJ已经提到了Lift。谢谢
十亿。

6
游戏拥有斯卡拉版本太多
islon

1
/我叹了口气。<rant> Step是一个很好的名字,为什么改用Scalatra?Express.js不称为Nodatra。烧瓶(不完全相同,但接近)不称为毕达索拉(Pythatra)。</ rant>
Dave Jensen

1
@ djensen47,您可以随时自由地开发自己的游戏;)
BAR



35

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

  • 库厄斯。Scala的传统MVC Web框架。

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

  • Uniscala花岗岩

  • 加德尔

  • 蒙多

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

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

  • 皮带。基于Scalaz-HTTP构建的Web应用程序的类似于Rack的界面

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

  • MixedBits。Scala编程语言的框架可帮助构建网站

  • 抑扬符。使用Scala编程语言将几个独立的开源项目联合起来进行应用程序开发。

  • Scala Webmachine。Basho的Web机位于Scala的端口,这是一个用于构建Web应用程序的基于REST的系统

  • 投球手。RESTful,多渠道的Scala Web框架


1
未过滤的幻灯片很好:链接
Rick-777,

我添加了bowlerframework(仅在网络上找到)。
亚当·根特



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


1
未经过滤非常非常酷。它确实干净,功能齐全,但不太复杂。
thatismatt


7

玩起来很甜蜜。

现在可以生产了。它包含:一个很酷的模板框架,在安全的情况下自动重新加载源文件,可组合的动作系统,akka令人敬畏的东西,等等。

它属于Typesafe Stack的一部分。

在两个项目中使用过它之后,我可以说它运行得非常顺利,下次您要学习新的Web框架时应该考虑一下。



4

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

目标观众

Scala Pages Web框架很可能会吸引来自Java背景并希望在Scala中编写Web应用程序的Web程序员。重点在于OOP,而不是功能编程。

特点和特点

  • 遵守模型-视图-控制器范例
  • 基于文本的模板引擎
  • 简单语法:$variable<?scp-instruction?>
  • 编码/内容检测,能够处理国际文本编码
  • 片段而不是自定义标签
  • URL重写

4

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

看看Xitrum吧它的文档非常广泛。从自述文件:

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

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

Hazelcast还提供:

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

按照教程进行快速入门。



3

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

brzy框架

它处于早期开发中,我仍在积极地进行研究。它包括以下功能:

  • 注重简单性和可扩展性。
  • 集成的构建工具。
  • 模块化设计; 一些初始模块包括对scalate,email,jms,jpa,squeryl,cassandra,cron服务等的支持。
  • 简单的RESTful控制器和动作。

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

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


1

Sweet和Slinky似乎都不需要维护大约一年了。Sweet Maven存储库sweetsoftwaredesign.com已死,因此甚至无法下载依赖项。


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

< /插头 >


0

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


0

几周前,我偶然发现了您的问题,但是从那时起,您还了解了Circumflex。这是一个很好的最小框架,因此易于学习,并且还提供了很好的文档。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.