Scala.js与Scala GWT进行客户端Web开发?

时间:2013-09-01 09:45:05

标签: scala gwt scala.js

我打算编写一个Web应用程序。但是,我想在Scala中编写客户端和服务器端。我应该选择Scala.js吗?或者我应该去GWT。我必须选择一个而不是另一个的情况是什么?另外,除了这两个之外,还有其他任何可用于客户端Web编程的Scala框架吗?

1 个答案:

答案 0 :(得分:4)

不应该使用这两者。

  • ScalaGWT已经放弃了一年多。
  • Scala.js是实验性的,需要您的用户下载一个16Mo的库(它会有所改进,但除了一些游戏应用程序之外它是不可接受的。)

[编辑]图书馆已经缩小规模,此时此声明已不再适用。

其他技术可用,但选择一种技术取决于您要编写的应用类型。如果您计划使用模板技术(如JSP或JSF)开发瘦客户端,您可以考虑使用播放模板,Lift,Scalatra,...

为了帮助您考虑您的需求,以下是一些想法:

您需要小部件和东西来设计您的用户界面,而这些内容通常是面向组件和事件驱动。在这种情况下,FP并不比OOP提供更多优势。

在标准企业应用程序中,scala.js可用于为js代码设计一个干净的函数库。这种类型的库肯定有很多东西可以提供,但它不会成为客户端代码的核心。相反,小部件,MVC基础架构以及与后端集成的层将是您花费大部分时间工作的内容。

GWT已经存在了很长时间。我认为这是一种成熟且经过验证的技术。您必须学习一些调整和模式才能充分发挥其潜力,但在我看来,远远少于编写干净且可维护的js代码所需的内容。

GWT并不要求你完全了解js(尽管我们都同意它总是最了解浏览器中发生的事情)。如果你不知道你正在编译什么,你就不会对scala.js走得太远。

如果你已经熟悉了javascript,那么直接输入你的scala代码会更容易,就好像它是某种支持scala的js一样。

大型团队使用GWT比使用js更容易,因为您可以轻松地对代码进行编码,同时支持代码测试和重用。

GWT绝对是对象(小部件/模型/视图/控制器)导向和事件驱动。如果您计划以完全功能的方式设计界面(对于游戏或非常特定的应用程序),我认为它会妨碍您的设计。


<强> GWT

  • 成熟
  • 它是一个成熟的工具包
  • GWT特定模式和良好实践已有详细记录
  • 与java / scala后端轻松集成
  • 发展规模远远超过大团队
  • 如果你还不了解js
  • ,那就最好了
  • 面向对象,GWT善良(依赖注入,MVP,Async,i18n,JSR-303验证......)
  • 将优化并编译您的代码到一个小的js文件

<强> Scala.js

  • 相当新的,正在进行的工作
  • 不是工具包,而是编译器
  • 因此,您需要了解js良好实践,设计模式和库,因为您的scala代码将直接与js(完全)交互
  • 需要自己编写/连接图层以与后端集成
  • 处理大型团队更加困难
  • 无需了解GWT: - )
  • 功能编程,Scala善良就在那里(特质,模式,案例类......)
  • [编辑]在询问问题时,需要一个16 Mo库

最终建议

  • 您是否需要UI组件之间的小部件和复杂的交互,或者您是否足以使用模板技术?
  • 使用ScalaGWT需要您自担风险。
  • 您可以将scala.js用于js库设计,实验项目,游戏......您可以从GWT应用程序调用scala.js编译的js代码(如果超过16 Mo库)