繁体   English   中英

Rhino,从多个javascript文件中添加代码

[英]Rhino, adding code from multiple javascript files

我正在使用Rhino在Java应用程序中嵌入一些javascript。 我正在关注Rhino网站上的示例,通过调用Context的evaluateString方法执行脚本并将实际脚本作为String传递。

我有一大堆现有的javascript代码,我想利用它。 我不想将它全部连接成一个巨大的String并将其传递给evaluateString。 我宁愿能够加载代码,以便我可以从我传递给evaluateString的代码中调用它(有点像AddCode方法在Microsoft的脚本控制中工作)。 我想添加代码,就像我目前可以使用ScriptableObject.putProperty方法添加变量一样。

有没有办法做到这一点? 有人可以提供代码段或文档链接。 谢谢!

文档示例中可以看出,对先前评估的对象的引用由作用域控制。

Context context = Context.enter();
try {
  ScriptableObject scope = context.initStandardObjects();
  Object out = Context.javaToJS(System.out, scope);
  ScriptableObject.putProperty(scope, "out", out);
  context.evaluateString(scope,
      "function foo() { out.println('Hello, World!'); }", "<1>", 1, null);
  context
      .evaluateString(scope, "function bar() { foo(); }", "<2>", 1, null);
  context.evaluateString(scope, "bar();", "<3>", 1, null);
} finally {
  Context.exit();
}

(Rhino 1.7发布2)


我知道有些人直接使用Rhino来获取最新版本,但Java 6实现可以像这样评估脚本:

ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
engine.eval("function foo() { println('Hello, World!'); }");
engine.eval("function bar() { foo(); }");
engine.eval("bar();");

在我的代码中,我有这个需求(实用程序脚本等),我只是简单地将它们连接在一个巨大的StringBuilder中并对其进行了改进(Java 6)。 它是自javascript无法做到的唯一方法(没有Java包装器对象)otherJSScript.someUsefulFunction()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM