4

Cで記述されたアプリケーションがあります。このアプリケーションでJavaScriptで記述されたユーザー定義スクリプトを実行し、これらのスクリプトがJavaScript名前空間にマップされた内部C変数で動作できるようにします。

NodeJSを使用してスクリプトエンジンとしてコンパイルすることは可能ですか?

私はその逆ができることを知っています。NodeJSを実行し、C変数をJSに適切にバインドしてNodeJSのライブラリとしてCコードを使用します。しかし、これは受け入れられません。私のアプリケーションには、libとして含まれているGUIや他の多くのモジュールがあり、NodeJSlibとして実行するようにコードを書き直すのは難しいからです。

また、パフォーマンス上の理由から、スクリプトを実行する必要があるたびにNodeJSを外部実行可能ファイルとして実行したくありません。NodeJSをメモリに保持し、プロセスサイクル全体で同じ名前空間でスクリプトを実行する必要があります。

たぶん、そのような目的のために意図されたNodeJSの特別版がありますか?または、そのようにコンパイルできますか?

4

3 に答える 3

4

次に、v8を使用してJavaScriptを実行する例を示します。

int main(int argc, char* argv[]) {

  // Create a string containing the JavaScript source code.
  String source = String::New("'Hello' + ', World'");

  // Compile the source code.
  Script script = Script::Compile(source);

  // Run the script to get the result.
  Value result = script->Run();

  // Convert the result to an ASCII string and print it.
  String::AsciiValue ascii(result);
  printf("%s\n", *ascii);
  return 0;
}

差出人:https ://developers.google.com/v8/get_started

于 2012-04-04T00:42:50.167 に答える
1

必要なのはV8javascriptエンジンです。詳細については、こちらをご覧ください...

This document discusses these concepts further and introduces others that are key to embedding V8 within your own C++ application.

nodejsを使用できるのは、おそらくV8エンジン上に構築する方法に関するソースコードを確認することです。

そして、ここに簡単な例があります。

于 2012-04-04T00:34:08.850 に答える
0

Nodeの内部を調べて、Nodeが実行していることを「コピー」してみませんか。次に、V8上にアプリを構築できます。Node.JSは、結局のところ、追加機能を提供するためのV8といくつかのライブラリ(I / O)の上の単なるレイヤーです。

于 2012-04-04T00:37:22.563 に答える