什么Scala Web框架可用? [关闭]

问题描述 投票:194回答:18

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

除了Lift之外,还有Scala的Web框架吗?

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

scala frameworks web-frameworks lift
18个回答
77
投票

我对Scala非常感兴趣,但我还没有使用它,所以有了这个警告,我所知道的框架在HRJ's answer(Lift,Sweet,Slinky)中没有提到:


5
投票

我倾向于使用Typesafe Stack使用JAX-RS(您可以在Scala,Java或Groovy中编写好的资源bean)来编写RESTul Web应用程序。然后我使用Jersey来渲染视图,使用各种模板语言之一(ScalateJADEScaml(Scala Server Pages),Ssp等)。


4
投票

有一个新的Web框架,名为Mustache。从网站:

目标观众

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

特点和特点

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

4
投票

Prikrutil,我想我们在同一条船上。我也是从Erlang来到Scala。我非常喜欢<?scp-instruction?>所以我决定创建一个受其启发的Scala Web框架。

看看NitrogenXitrum相当广泛。来自README:

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

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

Hazelcast还给出了:

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

按照Its doc快速入门。


3
投票

还有Pinky,曾经是bitbucket但被转移到qazxsw poi。

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


3
投票

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

tutorial

它处于早期开发阶段,我仍在积极地开展这项工作。它包括以下功能:

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

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

更新:2011-09-078,我刚刚发布了0.9.1版本的重大更新。有关github的更多信息,其中包括截屏视频。


1
投票

Sweet和Slinky似乎都是大约一年没有造成的。 Sweet Maven repo 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容器发出信号。

brzy framework

</插头>


0
投票

你也可以试试http://brzy.org。它被设计成一个Java框架,但我也成功地将它与Scala一起使用也毫无困难。它是一个基于组件的框架,具有与Lift或Tapestry类似的属性。


0
投票

几个星期前我偶然发现了你的问题,但此后也了解了https://github.com/mardambey/spiffy。这是一个很好的,最小的框架,因此易于学习,并且它还具有相当好的文档。

除了它的最小化之外,它还声称可以与其他库一起使用,并允许您在需要时使用自己的实现。


44
投票

我写了一篇关于这个问题的blog post

总而言之,一些选项是:

  1. Lift
  2. Sweet
  3. Slinky

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


35
投票

我喜欢Lift ;-)

Play是我对Scala友好的Web框架的第二选择。

Wicket是我的第三选择。


35
投票

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

  • Coeus。 Scala的传统MVC Web框架。
  • Unfiltered。用于在Scala中处理HTTP请求的工具包。
  • Uniscala Granite
  • Gardel
  • Mondo
  • Amore。 Ruby Web框架Sinatra的Scala端口
  • Scales XML。灵活的XML处理方法和与XML交互的简化方法。
  • Belt。用于基于Scalaz-HTTP构建的Web应用程序的类似Rack的界面
  • Frank。 Web应用程序DSL建立在Scalaz / Belt之上
  • qazxsw poi。用于帮助构建网站的Scala编程语言框架
  • MixedBits。使用Scala编程语言统一几个用于应用程序开发的自包含开源项目。
  • Circumflex。 Basho的Web机器在Scala中的端口,这是一个基于REST的系统,用于构建Web应用程序
  • Scala Webmachine。一个RESTful,多渠道准备好的Scala Web框架

23
投票

试试Bowler,它也支持Scala。


8
投票

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


8
投票

我发现Unfiltered非常有趣的InfoQ article

它在IttayD的列表中提到过。

这是关于它的介绍https://github.com/unfiltered/unfiltered和视频http://unfiltered.lessis.me/#0

另外这里有一篇文章更多信息http://code.technically.us/post/942531598/doug-tangren-presents-the-unfiltered-toolkit-for


8
投票

必须指出的是,http://code.technically.us/post/998251172/holding-the-parameterWicket也有相当大的兴趣。 Wicket非常适合Scala。如果您想利用非常成熟的Wicket项目及其生态系统(扩展)以及Scala的简洁语法和生产力优势,这可能适合您!

也可以看看:

  1. Scala
  2. Some prosa
  3. Presentation
  4. Some experience with Wicket and Scala

7
投票

Announcments with reference to the project for the glue code to bind Scala closures to models非常甜蜜。

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

它的一部分Play

将它用于两个项目后,我可以说它工作得很顺利,下次你想要学习新的web框架时应该考虑一下。

© www.soinside.com 2019 - 2024. All rights reserved.