gpt4 book ai didi

用于客户端 Web 开发的 Scala.js 与 Scala GWT?

转载 作者:行者123 更新时间:2023-12-04 12:32:42 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

7年前关闭。




Improve this question




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

最佳答案

这两个都不应该使用。

  • ScalaGWT 已经被废弃了一年多。
  • Scala.js 是实验性的,需要您的用户下载 16Mo 库(它会改进,但除了某些游戏应用程序外,这是 Not Acceptable )。

  • [编辑] 图书馆已缩小规模,此时此说法不再正确。

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

    为了帮助您考虑您的需求,这里有一些想法:

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

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

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

    GWT 根本不需要您了解 js(尽管我们都同意最好了解一点浏览器中发生的事情)。如果你不知道你要编译成什么,你不会用 scala.js 走多远。

    如果您已经很好地了解 javascript,那么直接键入您的 scala 代码会更容易,就好像它是某种启用了 scala 的 js 一样。

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

    GWT 绝对是面向对象(小部件/模型/ View / Controller )和事件驱动的。如果您计划以功能齐全的方式设计界面(用于游戏或非常具体的应用程序),我认为它会妨碍您的设计。

    GWT
  • 成熟
  • 这是一个成熟的工具包
  • 特定于 GWT 的模式和良好实践有详细记录
  • 与 java/scala 后端轻松集成
  • 大型团队的开发规模更大
  • 如果你还不了解 js 最好
  • 面向对象的 GWT 优点就在那里(依赖注入(inject)、MVP、异步、i18n、JSR-303 验证...)
  • 将优化并编译您的代码到一个小的 js 文件


  • Scala.js
  • 相当新,正在进行中
  • 不是工具包,而是 编译器 .
  • 因此,您需要了解 js 的良好实践、设计模式和库,因为您的 Scala 代码将(相当)直接与 js 交互
  • 需要自己编写/连接一个层以与后端集成
  • 处理大团队要困难得多
  • 无需知道 GWT :-)
  • 函数式编程,Scala 的优点在那里(特征、模式、案例类……)
  • [编辑] 在提出问题时,需要一个 16 Mo 库


  • 最终建议
  • 您是否需要小部件和 UI 组件之间的复杂交互,还是使用模板技术就足够了?
  • 使用 ScalaGWT风险自负。
  • 您可以将 scala.js 用于 js 库设计、实验项目、游戏……您可以从您的 GWT 应用程序中调用从 scala.js 编译的 js 代码(如果您通过了 16 Mo 库)
  • 关于用于客户端 Web 开发的 Scala.js 与 Scala GWT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557181/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com