0

Ant ビルド プロセスの一部として Rhino を使用して、JavaScript をバンドルおよび縮小しています。それに加えて、クライアント側のテンプレートもプリコンパイルしたいと思います。つまり、マークアップから JavaScript にコンパイルします。一見、Rhino の serialize() メソッドでできると思ったのですが、そうではないようです。

// Load templating engine
load( "engine.js" );

// Read template file
var template = readFile( "foo.template" ),

// Compile template
compiled = engine.compile( template );

// Write compiled template to file
serialize( compiled, "compiledFoo.js" );

これにより、バイナリ ファイルが書き込まれます。私が欲しいのは、コンパイルされたテンプレートを含むテキスト ファイルです。

serialize() を使用することが答えではない場合、それは何ですか? Rhinoなので、Javaクラスも同様にインポートできます。勝手に、私はそれを行う方法を理解できません。

これは Node で実行できることはわかっていますが、現時点ではビルド プロセスを Ant-Rhino から Grunt-Node に移行する立場にはありません。

4

2 に答える 2

2

答えを探しているうちに、Rhino の C/C++ の姉妹である SpiderMonkey には、ご想像のとおり、JavaScript の機能とは逆の機能があるという事実に出くわしました。後でもう一度 Google 検索を行ったところ、Rhinoが 1.5R5 で実装されていることがわかりました。これは、Rhino がこの機能を持っている (または持っていない)と述べている唯一のドキュメントかもしれません。uneval()eval()uneval()

そうは言っても、ここに解決策があります:

// Load the templating engine
load( "engine.js" );

// Read the template file
var template = readFile( "foo.template" ),

// Compile the template markup to JavaScript
compiled = engine.compile( template ),

// Un-evaluate the compiled template to text
code = uneval( compiled ),

// Create the file for the code
out = new java.io.FileWriter( "foo.js" );

// Write the code to the file
out.write( code, 0, code.length );
out.flush();
out.close();

quit();
于 2012-06-26T18:20:24.187 に答える
0

必要な値を文字列として返す Java から呼び出すことができる関数を JavaScript に記述します。

于 2012-06-22T20:21:40.233 に答える