如何做一个GWT包装器



嗨,我需要一些关于如何做JavaScript库包装器的指导或指针。

我做了一个简单的JavaScript"myTest.js",带有一个函数:

function myFunction(num)
{
    if(num==1){
        return "Hello World1!";
    }else{
        return "bye World2!";
    }
}

我在我简单的HTML中调用:

<html>
  <head>
    <script type="text/javascript" SRC="myLib.js">  
</script>
    <title>Tutorial: HelloWorld</title>
  </head>
  <body>
    <h1>Example HTML</h1>
    <input type="button" value="button" onclick="alert(myFunction(1))">
  </body>
</html>

显然,这个例子在GWT中很容易做到。

这只是为了学习如何做一个 javascript 文件的 gwt 包装器,以便能够在 GWT 中调用函数。

谢谢


好的,如果我有一个带有此功能的 js 文件,我需要一个更强大的示例:

  function MyObject() {
    // properties in config
    this.displayname = 'First Last';
    this.username = '1060';
    this.domain = '12.18.34.234';
    this.authname =  '1060';
    this.password = '1060';
    this.transport = 'w34s';
   }

在 html 中是我发出此调用的脚本部分

var myObj = new MyObject();

如何在 GWT 中做到这一点?

我必须创建类 MyObject 吗?使用JavaScript中呈现的字段?

要在 Java 和 JavaScript 类型之间架起桥梁,请使用 GWT 的覆盖类型来创建 API 包装层。

然后,您可以创建一个单独的模块来包含包装的库并将其链接到主模块。

如果你想

在GWT中调用原生javascript,你可以在GWT类中定义一个原生方法,如下所示:

private native void test(String argument)/*-{
    myFunction(argument);
}-*/

当你从GWT调用方法test("foo")时,它将调用本机js函数myFunction("foo");

你必须使用 JSNI。请参阅此处的 GWT 2.4 文档。

现在你应该使用JSNI,但也有js互操作.js互操作使事情变得容易得多,在即将到来的2.8中,js interop将成为常态,它将直接内置到GWT编译器中。他们说 2.7 中的 js 互操作是实验性的。这是关于它的文档。

最新更新