我有一个用C编写的应用程序,我想在这个应用程序中执行用JavaScript编写的用户定义的脚本,并允许这些脚本与映射到JavaScript名称空间的内部C变量一起工作。
是否可以使用NodeJS将其编译为脚本引擎?
我知道反之亦然:运行NodeJS,使用我的C代码作为NodeJS的库,并将C变量正确绑定到JS。但这是不可接受的,因为我的应用程序有一个图形用户界面和许多其他模块,它们都包含在库中,而且很难重写代码以作为NodeJS库运行。
我也不希望每次出于性能原因需要运行脚本时,都将NodeJS作为外部可执行文件运行。我需要将NodeJS保存在内存中,并在整个进程周期中在同一名称空间中运行脚本。
也许有一些NodeJS的特别版就是为了这样的目的?或者我可以这样编译它?
发布于 2012-04-04 00:34:09
发布于 2012-04-04 00:42:50
下面是使用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;
}
发布于 2012-04-04 00:37:23
为什么不探索Node的内部结构,然后“复制”它所做的事情呢?然后你就可以在V8上构建你的应用了。毕竟,Node.JS只是V8和几个库(I/O)之上的一层,用于提供附加功能。
https://stackoverflow.com/questions/10003332
复制