我需要从Java程序中生成JavaScript(ECMAScript)代码。为此,我正在寻找像JavaPoet这样的东西,但是将JavaScript作为输出。
我无法使用其中一种将其他语言翻译成JavaScript的转换器(例如GWT不是答案),也不能使用从语法树生成JavaScript的工具(只有当有一个库可以帮助构建语法树时... )。
像已经提到过的JavaPoet之类的东西就是答案,因为它在内存使用和代码大小方面的占用空间非常小。
生成的JavaScript代码的目标是Java / JSR 223(Nashorn),如果这是相关的。
要指定要求:JavaPoet使用此代码
string data = @"<div class=""item"" attr=""abc"">VALUE I NEED TO GET</div>
<div class=""item"" data-attr=""def"">VALUE I NEED TO GET</div>
<div class=""item"" something-else=""xyz"">VALUE I NEED TO GET</div>
<div class=""item"" other=""123"">VALUE I NEED TO GET</div>";
Regex.Matches(data, @"(?<=>)(?![\r\n])([^<]+)")
.OfType<Match>()
.Select(itm => itm.Groups[1].Value);
创建此Java代码
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);
(我已经从JavaPoet项目网站复制了样本。)
我希望有类似的东西代替创建JavaScript代码。
据我所知,StringBuilder实际上最接近这个要求。首先生成Java以将其转换为JavaScript应该可以工作,但对我来说看起来真的很奇怪 - 而且是全部,但不是真正的轻量级。与首先生成Kotlin或Ceylon代码然后将其转换为JavaScript相同。
答案 0 :(得分:1)
我知道你不想要一个转换器,但是因为似乎没有你想要的javascript生成器,可能一个轻量级的java-js转换器可以完成这项工作。
尝试使用javapoet生成一些java,然后让输出通过jsweet
转换器,有一个online沙箱,您可以使用它来查看输出,然后再决定它是否为最好的选择。