【问题标题】:Can I use a pre-compiled module like a library of widgets?我可以使用像小部件库这样的预编译模块吗?
【发布时间】:2013-04-19 11:19:26
【问题描述】:

我将开发一个生成 gwt 应用程序的系统。这些应用程序共享很多小部件,编译时间对我来说非常重要。 我想知道是否可以准备一组小部件,将它们包装在一个没有入口点的模块中,只编译一次,然后在其他模块从它继承的其他项目中重用编译后的代码。

  • ModuleA(仅共享小部件)
  • Module1(app1 的其余部分,继承自 ModuleA)。
  • Module2(app2 的其余部分,继承自 ModuleA)。

我可以在每次生成新应用时编译 Module2 而不重新编译 ModuleA 吗?

我还使用了 superDevMode 和所有编译优化, 但这已成为一个原则问题:)

我不关心 GWT 优化。

谢谢

【问题讨论】:

  • 据我所知你做不到。每次编译时都必须编译整个项目(包括共享的小部件)。 GWT 让您这样做,因为否则它将无法完成 GWT 擅长的所有优化。

标签: javascript gwt compilation pre-compilation


【解决方案1】:

你不能在不使用 jsni 的情况下编译模块并从另一个模块调用它们。

即使使用 jsni,除了 primitiveOverlay 类型之外,您也无法在模块之间传递对象。

我看到的最佳解决方案是您可以使用gwt-exporter 将小部件从ModuleA 导出到javascript,我前段时间写的tutorial 可以帮助您。

但在将 ModuleA 导出为 javascript API 后,您必须在 GWT 中使用 jsni 包装此 api,以便从 ModuleB 和 ModuleC 调用它。

恕我直言,当您排除 ModuleA 时,在编译 ModuleB 时节省时间是不值得的。

认为当您导出 ModuleA 时,您必须编译所有内容,尽管它没有在 ModuleB 中使用。如果您必须使用原始类型和覆盖类型与 ModuleA 交换信息,您在 ModuleB 中的代码将是一团糟。还有很多其他问题。

【讨论】:

  • 您认为 gwt-exporter 是否是一个很好的解决方案,可以让我的客户扩展我生成的 gwt 应用程序?
  • 当然!它就是为此而设计的
猜你喜欢
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2014-01-02
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多