集成GWT和angular2

Raz*_*ger 5 javascript java gwt angular

我在GWT中有一个大项目,我正在尝试将Angular2与它集成。(由于我在2.7版上运行,因此无法迁移到2.8版,所以不能选择angular2-gwt

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

1)我听说您可以使用JSNI来使用angular应用程序,但是我似乎无法做到这一点或找到任何有关它的信息。它是如何工作的,我该怎么办?(调用功能是一种选择吗?)

2)我试图将有角度的应用程序的选择器标记添加到GWT入口点html,并且效果很好,但是当我尝试将选择器添加到.ui.xml文件(UI绑定)时,它不起作用,为什么?

3)是否可以从Servlet调用GWT客户端?我的意思是我正在angular2应用程序上并使用rest调用,此rest调用可以在GWT客户端调用某些东西吗?

谢谢!

And*_*rei 4

首先,我应该指出,从 GWT 2.7 迁移到 GWT 2.8 对我来说非常轻松。我更新了我的应用程序,没有遇到任何重大问题(一些 Maven 依赖项发生了变化,一些标志在这里和那里,等等)。我之所以提到这一点,是因为与 GWT 2.7 相比,GWT 2.8 中的原生 JS 支持得到了极大的改进,所以如果可能的话,您确实应该进行切换。

无论如何,在 GWT 2.7 中:

  1. 您可以像这样从 GWT 调用任何类型的 JS:

public static native void sayHello() /*-{ $wnd.alert("Hello world!"); }-*/;

请注意$wndJS 中“全局”命名空间占位符的构造(即在 JS 中您只需调用alert() 而不使用特定命名空间)。

但请注意,如果您要与大量JS 本机代码交互(例如使用 Angular 中的复杂对象),那么您将为走这条路线付出高昂的代价。当您想从 JS 调用一两个函数时,此路线非常有用,但除此之外我不推荐它。例如,您可以查看http://www.gwtopenlayers.org/gwt-openlayers的源代码,并查看更复杂的示例(该库包装了许多本机 JS)

  1. 我真的不知道有什么角,但它.ui.xml是一种特殊的野兽。一些混淆发生在后台/一些其他事情发生。最接近 HTML 的方法是在g:HTMLPanel小部件中放入一些内容,但据我所知,其中不能真正包含 JS。
  2. 你在这里问的有点令人困惑。除非您坚持,否则您不能轻易地从服务器端 servlet 调用任何客户端代码;然后,您可以采取变通办法并使用长轮询等技术,但我不太喜欢这些技术。我可以对这个主题进行更多的阐述,但看来我对你的观点的理解可能不够。