我在GWT有一个大项目,我正在尝试将Angular2与它集成。 (angular2-gwt不是一个选项,因为我在2.7版本上运行,当时无法迁移到2.8)
我面临一些我似乎不知道如何面对的问题:
1)我听说你可以使用JSNI来使用角度应用程序,但我似乎无法做到这一点或找到任何有关它的信息。它是如何工作的,我能用它做什么? (调用函数是一个选项?)
2)我尝试将角度应用程序的选择器标签添加到GWT入口点html并且运行良好但是当我尝试将选择器添加到.ui.xml文件(UI绑定)时它不会'工作,为什么?
3)是否有从servlet调用GWT客户端的选项?我的意思是我在angular2应用程序并使用休息呼叫,这个休息呼叫可以在GWT客户端调用某些内容吗?
谢谢!
答案 0 :(得分:1)
首先,我应该注意到从GWT 2.7到GWT 2.8的迁移对我来说非常轻松。我更新了我的应用程序并且没有任何重大问题(一些Maven依赖项发生了变化,一些标记在这里和那里等)。 我之所以提到这一点,是因为本地JS支持在GWT 2.8和GWT 2.7中得到了极大的改进,所以如果可能的话,你真的应该进行切换。
无论如何,在GWT 2.7中:
public static native void sayHello() /*-{
$wnd.alert("Hello world!");
}-*/;
请注意$wnd
构造,它是JS中“全局”命名空间的占位符(即在JS中,您只需在不使用特定命名空间的情况下调用alert()
)。
请注意,如果您正在使用很多的JS本机代码(例如使用角度来看的复杂对象),那么您将为这条路线付出沉重的代价。当你想从JS调用一个或两个函数时,这个路径是好的,但除此之外我不推荐它。
您可以在http://www.gwtopenlayers.org/的gwt-openlayers
源代码中查看示例,看看它是如何看待更复杂的示例(此库包含了大量原生JS)
.ui.xml
是一个特殊的野兽。一些混淆发生在后台/其他一些事情发生。你最接近HTML的是将一些东西放在g:HTMLPanel
小部件中,但据我所知,你不能真正拥有JS。