5

我需要从 Java 程序内部生成 JavaScript (ECMAScript) 代码。为此,我正在寻找类似JavaPoet的东西,但生成 JavaScript 作为输出。

我不能使用这些将另一种语言翻译成 JavaScript 的转译器(例如 GWT 不是答案),也不能使用从语法树生成 JavaScript 的工具(只有当有一个库可以帮助构建该语法树时......)。

像已经提到的 JavaPoet 之类的东西就是答案,因为它在内存使用和代码大小方面都非常小。

生成的 JavaScript 代码的目标是 Java/JSR 223 (Nashorn),如果这相关的话。

指定要求:JavaPoet 使用此代码

MethodSpec main = MethodSpec.methodBuilder("main")
    .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
    .returns(void.class)
    .addParameter(String[].class, "args")
    .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
    .build();

TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
    .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
    .addMethod(main)
    .build();

JavaFile javaFile = JavaFile.builder("com.example.helloworld", helloWorld)
    .build();
javaFile.writeTo(System.out);

创建此 Java 代码

package com.example.helloworld;

public final class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, JavaPoet!");
  }
}

(我从 JavaPoet 项目网站复制了示例。)

我希望有类似的东西来创建 JavaScript 代码。

据我目前所知,StringBuilder 实际上最接近这个要求。首先生成 Java 以将其转换为 JavaScript 应该可以,但对我来说看起来真的很奇怪——而且是全部,但不是真正的轻量级。与首先生成 Kotlin 或 Ceylon 代码然后将其转换为 JavaScript 相同。

4

1 回答 1

0

我知道您不需要转译器,但由于似乎没有您想要的 javascript 生成器,因此轻量级的 java-js 转译器可能可以完成这项工作。

尝试使用您提到的 javapoet 生成一些 java,然后使输出通过jsweet转译器,有一个在线沙箱,您可以使用它来查看输出,然后再决定它是否是最佳选择。

于 2017-04-28T08:37:47.243 回答