整合GWT和angular2

时间:2017-05-10 08:25:49

标签: javascript java angular gwt

我在GWT有一个大项目,我正在尝试将Angular2与它集成。 (angular2-gwt不是一个选项,因为我在2.7版本上运行,当时无法迁移到2.8)

我面临一些我似乎不知道如何面对的问题:

1)我听说你可以使用JSNI来使用角度应用程序,但我似乎无法做到这一点或找到任何有关它的信息。它是如何工作的,我能用它做什么? (调用函数是一个选项?)

2)我尝试将角度应用程序的选择器标签添加到GWT入口点html并且运行良好但是当我尝试将选择器添加到.ui.xml文件(UI绑定)时它不会'工作,为什么?

3)是否有从servlet调用GWT客户端的选项?我的意思是我在angular2应用程序并使用休息呼叫,这个休息呼叫可以在GWT客户端调用某些内容吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我应该注意到从GWT 2.7到GWT 2.8的迁移对我来说非常轻松。我更新了我的应用程序并且没有任何重大问题(一些Maven依赖项发生了变化,一些标记在这里和那里等)。 我之所以提到这一点,是因为本地JS支持在GWT 2.8和GWT 2.7中得到了极大的改进,所以如果可能的话,你真的应该进行切换。

无论如何,在GWT 2.7中:

  1. 您可以像这样从GWT调用任何类型的JS:
  2. public static native void sayHello() /*-{ $wnd.alert("Hello world!"); }-*/;

    请注意$wnd构造,它是JS中“全局”命名空间的占位符(即在JS中,您只需在不使用特定命名空间的情况下调用alert())。

    请注意,如果您正在使用很多的JS本机代码(例如使用角度来看的复杂对象),那么您将为这条路线付出沉重的代价。当你想从JS调用一个或两个函数时,这个路径是好的,但除此之外我不推荐它。 您可以在http://www.gwtopenlayers.org/gwt-openlayers源代码中查看示例,看看它是如何看待更复杂的示例(此库包含了大量原生JS)

    1. 我真的不知道任何角度,但.ui.xml是一个特殊的野兽。一些混淆发生在后台/其他一些事情发生。你最接近HTML的是将一些东西放在g:HTMLPanel小部件中,但据我所知,你不能真正拥有JS。
    2. 有点混淆你在这里问的问题。除非你坚持,否则你不能轻易地从服务器端servlet调用任何客户端代码;那么,你可以做变通办法并使用诸如长期民意调查等技术,但我不是那些人的忠实粉丝。我可以在这个问题上进一步扩展,但似乎我对你的观点的理解可能不足。