2013-12-13 34 views
1

我有以下要求:分发GWT模块如JavaScript

产生这样一种方式,它可用于一个GWT模块/包括在GWT应用而不重新编译它(这样即插即用) 。这个即插即用模块将包含一个小部件和一些随机类。使用此模块的GWT应用程序应该能够扩展模块的某些功能。

在我看来,明显的解决方案是简单地将GWT模块编译为JS,然后分发这个JS,然后使用JSNI链接到它。

我想知道是否有某种标准的解决方案。

我也有兴趣知道如何确保浏览器兼容性(即如何挂钩到GWT的引导进程,以便我们加载相应的JS文件,为当前浏览器)的想法。

+0

我没有意识到GWT是用Java编写的(然后编译成JavaScript),所以我错误地删除了[java]标签。 Mea culpa! –

+0

所以你想在没有提供widget的用户的情况下创建一个widget? – Kieveli

+0

是的,这是一种方式。但是我认为更准确地说,我想分发模块而不需要在主机应用程序中重新编译。 – Andrei

回答

0

简而言之,如果您没有Java源代码,则无法直接重用GWT方法。 (这就是我称之为GWT的“Compile time source dependency”)。所以你已经在正确的轨道上:你必须通过JavaScript去。

项目GWT Exporter使得将GWT方法导出到JavaScript更容易。它还可以确保你的方法没有被GWT编译器优化(如果你从未从代码中调用过某个方法)。

+0

谢谢,我也是考虑这个方向。但是,我需要询问浏览器的兼容性。如果我使用GWT Exporter,我想我最终会得到一个支持每个浏览器的JS。在我的客户端应用程序中,使用这样的模块,我不得不修改gwt链接器来仅加载当前浏览器的JS。你知道是否/如何做到这一点? – Andrei

+0

实际上,这应该像其他任何GWT应用一样完成:在页面中包含“* .nocache.js”文件,并且将加载GWT代码(正确的排列,包括导出的JS函数)。在“onModuleLoad”结尾处,您可以启动任何其他脚本,请参阅https://code.google.com/p/gwt-exporter/wiki/GettingStarted上标记为“重要”的部分 –