簡體   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