我打算编写一个Web应用程序。但是,我想在Scala中编写客户端和服务器端。我应该选择Scala.js吗?或者我应该去GWT。我必须选择一个而不是另一个的情况是什么?另外,除了这两个之外,还有其他任何可用于客户端Web编程的Scala框架吗?
答案 0 :(得分:4)
不应该使用这两者。
[编辑]图书馆已经缩小规模,此时此声明已不再适用。
其他技术可用,但选择一种技术取决于您要编写的应用类型。如果您计划使用模板技术(如JSP或JSF)开发瘦客户端,您可以考虑使用播放模板,Lift,Scalatra,...
为了帮助您考虑您的需求,以下是一些想法:
您需要小部件和东西来设计您的用户界面,而这些内容通常是面向组件和事件驱动。在这种情况下,FP并不比OOP提供更多优势。
在标准企业应用程序中,scala.js可用于为js代码设计一个干净的函数库。这种类型的库肯定有很多东西可以提供,但它不会成为客户端代码的核心。相反,小部件,MVC基础架构以及与后端集成的层将是您花费大部分时间工作的内容。
GWT已经存在了很长时间。我认为这是一种成熟且经过验证的技术。您必须学习一些调整和模式才能充分发挥其潜力,但在我看来,远远少于编写干净且可维护的js代码所需的内容。
GWT并不要求你完全了解js(尽管我们都同意它总是最了解浏览器中发生的事情)。如果你不知道你正在编译什么,你就不会对scala.js走得太远。
如果你已经熟悉了javascript,那么直接输入你的scala代码会更容易,就好像它是某种支持scala的js一样。
大型团队使用GWT比使用js更容易,因为您可以轻松地对代码进行编码,同时支持代码测试和重用。
GWT绝对是对象(小部件/模型/视图/控制器)导向和事件驱动。如果您计划以完全功能的方式设计界面(对于游戏或非常特定的应用程序),我认为它会妨碍您的设计。
<强> GWT 强>
<强> Scala.js 强>
最终建议