【问题标题】:How do I get started developing for a web using Scala?如何开始使用 Scala 为 Web 开发?
【发布时间】:2010-11-19 08:03:06
【问题描述】:

现在,我熟悉 Scala 语言并准备进行 Web 开发。我遇到的唯一框架是Lift,对此一无所知。您如何使用 Scala 进行 Web 开发?

【问题讨论】:

  • 您是否出于某种原因排除了 Lift,或者有关 Lift 的答案是否有效?这不清楚。
  • 我不排除Lift。我只是说我不知道​​开始使用它有多成熟。我想知道 Scala Web 开发的一般方法是什么?

标签: scala


【解决方案1】:

至少有 2 个用于 Web 开发的 scala 框架。一个,正如你提到的,是Lift

还有Step,它是 Sinatra 中用于 ruby​​ 的微框架。它看起来很酷,并且有一个不错的 DSL。

比较实验性,最新的scalaztrunk 有一个用于处理网络应用程序的包。虽然它有点缺乏文档和示例,并且在接下来的几个月中可能会发生一些重大变化(我是提交者)。如果您想遵循我正在考虑使用它的最前沿方式,您可以查看scapps。我希望尽快推出一个示例应用程序。

【讨论】:

    【解决方案2】:

    我使用WicketTapestry 在Scala 中构建Web 应用程序。

    我没有选择 Lift 的主要原因是因为我们的开发人员对这两个框架非常有经验,因此转换到 Scala 对他们来说会更容易。

    当然,在使用带有 Scala 的 Java Web 框架时需要牢记一些事项:

    • 集合类。 Scala 集合比它们的 Java 对应物要丰富得多,但是大多数 Java 框架都无法使用它们。 (显然,Scala 2.8 将引入一些补救措施)
    • 偶尔的兼容性问题,例如 Tapestry 5.1 不接受模块类中不需要的方法,但 Scala 隐含地为每个类添加了 $tag()。这将导致 Tapestry 拒绝该类。

    【讨论】:

    • 您是如何解决$tag 问题的?不使用 Tapestry 5.1?
    • 我刚刚用 Java 写了一个类 :) 这是一个 hackish 解决方案,但显然 Scala 2.8 无论如何都会停用 $tag 方法,然后它就不再是问题了。
    • 提示:您可以在 Scala 中使用 Java 集合,在 Java 中使用 Scala 集合,2.7.x,github.com/jorgeortiz85/scala-javautils/tree/master
    【解决方案3】:

    在 Scala 中使用 Lift 进行 Web 开发有一些好处:

    • 积极、支持、响应迅速的社区;
    • 该框架是为 Scala 设计的,而不是恰好与 Scala 兼容;
    • 已经有多个贡献者投入了大量精力。

    负面因素:

    • 如果您(像我一样)从 Struts 等框架迁移,这可能是一个挑战;
    • 对用户请求的大部分响应发生在 1.1-SNAPSHOT 中,而不是特定版本,这意味着您正在针对移动目标进行编码。在实践中不是一个大问题,但我可以看到这让一些人感到不安。显然,一旦 1.1 发布,这个要点就不会过时了。

    正如 Nick Partridge 在他的回答中指出的那样,还有其他框架。由于我不知道您对框架的需求或期望,我只能向您指出一些可以帮助您下​​定决心的 Lift 资源:

    您可能还想了解 Lift 的动机和影响(“Seaside 高度精细的会话和安全性, Rails 快速闪现、Django 的“不仅仅是包含 CRUD”、Wicket 的设计师友好模板……”)在http://liftweb.net/ 上列出,看看它们是否符合您的要求。

    【讨论】:

      【解决方案4】:

      我在 Struts 2 和 Scala 上取得了成功。 scala.reflect 包中的@BeanInfo 和@BeanProperty 注释可以方便地访问属性。

      【讨论】:

        【解决方案5】:

        如果您想用 Scala 编写应用程序,我相信 Lift 是目前领先的 Web 框架。

        【讨论】:

          【解决方案6】:

          play framework 现在是最大的 Scala Web 框架之一。

          【讨论】:

            猜你喜欢
            • 2020-07-14
            • 2011-05-03
            • 1970-01-01
            • 2010-12-31
            • 1970-01-01
            • 2011-05-21
            • 1970-01-01
            • 1970-01-01
            • 2015-11-15
            相关资源
            最近更新 更多