嗨,我需要一些关于如何做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 互操作是实验性的。这是关于它的文档。