GWT vs打字稿

Dav*_*len 5 gwt typescript

关于GWT和javascript有很多帖子,但我找不到任何关于GWT和打字稿的帖子.

我在Java中有大约20,000行代码我需要转移到浏览器客户端.但是,如果我走这条路,它不仅仅是在GWT中重新编译.我需要删除该代码中引用的一堆对象(现有代码是更大程序的一部分).

此外,一些广泛使用的低级类正在发生变化.这不是一个很大的变化,但这些类在很多地方都有使用.所以这两种方式都是重写.如果我得到了GWT,那么重写会更顺利一些,但是重写一下.

此代码也没有GUI或I/O组件.它在客户端上由javascript调用,仅用于处理javascript代码创建和使用的javascript对象.

这引出了我的问题.GWT与打字稿有什么优缺点?

mus*_*hin 1

如果您和您的开发人员更熟悉 Java,那么 GWT 可能是更好的选择。此外,这允许您至少重用一些现有的 Java 代码而无需更改,而如果您移植到 TypeScript,则必须全部重写。

不幸的是,我对GWT了解不多,但可以提供TypeScript的以下卖点:

  • 它是 JavaScript 的超集;这意味着熟悉 JavaScript 的开发人员更容易跟上它的速度(假设他们有一些静态类型的经验)。
  • 即使在非 MS 环境中,该工具也非常好。我使用 WebStorm 和 Grunt 进行开发和构建;WebStorm 中的自动完成功能非常好。
  • 它合并了 ES6 提案中的“箭头函数”,减少了代码中出现“this”绑定错误的机会。
  • 即使没有源映射,代码在现代浏览器中也很容易调试,因为 JS 源与 TypeScript 源相比并没有太大变化(即减去类型)。不过,chrome 中的 sourcemap 调试相当不错,我几乎没有直接调试 JS。
  • 如果你不想处理静态类型,你可以将一个变量标记为 :any (或省略类型),然后你就有效地回到了无忧无虑的 JavaScript 中(有些人会认为忽略类型系统很容易像这样作为一个缺点)。

以下是我观察到的 TypeScript 的一些缺点:

  • 编译器速度很慢(虽然我知道它已经变得越来越快,但构建大多数重要项目仍然需要几秒钟)。
  • 非 MS IDE 虽然不错,正如我上面提到的,但还可以更好;WebStorm 还可以,但是一些工具(例如重构(例如重命名函数))并不总是能很好地工作。
  • 处理各种形式的模块导入可能会很痛苦,但这主要是 Javascript 没有标准导入格式的遗留问题。