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

Phi*_*ipp 5 javascript java scripting rhino

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

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

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

McD*_*ell 2

文档示例来看,对先前评估的对象的引用似乎是由范围控制的。

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();
}
Run Code Online (Sandbox Code Playgroud)

(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();");
Run Code Online (Sandbox Code Playgroud)