3

JavaアプリケーションでenvjsとRhinoを実行して、D3.jsでSVGをレンダリングしようとしています。

これまでのところ、Rhinoを使用して小さな関数を評価できますが、envjsの設定に関しては、問題が始まります。最も重要なのは、envjsの唯一のチュートリアルがenv.rhino.jsと呼ばれるファイルについて話しているということです。しかし、どこにあるのかわかりません。

誰かが私を助けることができますか?

(はい、グーグルはいくつかの結果を示していますが、それらは公式にはRhinoまたはenvjsに属していません)

4

3 に答える 3

3

私はこの答えが非常に遅いことを知っています。しかし、私は同じことをしたいと思っていて、同じ問題を抱えていました-多分これは次の問題を助けるでしょう。env-js上の何百ものgithubフォークのどれがその仕事をするかを理解するのに少し時間がかかりました。この組み合わせは簡単なテストで機能することがわかりました。

git clone https://github.com/thatcher/envjs-site.git
#note the different fork!
wget https://raw.github.com/thatcher/env-js/master/src/dom/sizzle.js 
wget http://d3js.org/d3.v3.min.js

java -jar dist/env-js-1.1.jar
load("lib/env.rhino.js");
load("sizzle.js");
load("d3.v3.min.js");
d3.select("body").append("svg").selectAll("line").data([1,2]).enter().append("line").attr("x1", function(d){return d;});
document.innerHTML;

<html><head/><body><line/><line/><svg xmlns="http://www.w3.org/2000/svg"><line x1="1"/><line x1="2"/></svg></body><line/><line/></html>

j

于 2013-08-02T11:46:59.530 に答える
2

まず、をダウンロードしますenv.rhino.js

次に、このJavaコードを使用してRhinoインスタンスを起動し、Env.jsをロードします。

import org.mozilla.javascript.Context;
import org.mozilla.javascript.tools.shell.Global;
import org.mozilla.javascript.tools.shell.Main;

Context cx = Context.enter();
Global scope = new Global(cx);
cx.setOptimizationLevel(-1); 
cx.setLanguageVersion(Context.VERSION_1_5);

これで、JavaScriptファイルをロードして実行できます(ファイルシステムの絶対パスを使用)

Main.processFile(cx, scope, ABSOLUTE_PATH_TO_SOME_JAVASCRIPT_FILE);

および/またはJavaScriptコードを評価し、その文字列の結果を取得します

(String)cx.evaluateString(scope, "alert('Its WORKING!')", "js", 1, null);
于 2013-10-09T12:19:35.250 に答える
0

私はこれを試みましたが、あまり遠くまで行くことができませんでした。また、Java(私の場合はGlassfish)からリクエストを開始して、サーバー側でSVGを生成したいと思いました。これを行う唯一の方法は、jsdomとNode.jsを使用することです。私はこれをうまく行うことができます。悲しいことに、Node.js + jsdom以外に、これを行う方法は他にないようです。

それが機能するようになると、SVG生成リクエストでNode.jsを大量にロードしようとすると、より大きな問題が潜んでいます。

于 2013-04-12T21:03:46.930 に答える