我有一个用C编写的应用程序。我想在这个应用程序中执行用JavaScript编写的用户定义脚本,并允许这些脚本与映射到JavaScript命名空间的内部C变量一起工作。
是否可以使用NodeJS将其编译为脚本引擎?
我知道我可以反之亦然:运行NodeJS并使用我的C代码作为NodeJS的库,并将C变量正确绑定到JS。但这是不可接受的,因为我的应用程序有一个GUI和许多其他模块,这些模块都是作为库包含的,而且很难重写代码以作为NodeJS库运行。
由于性能原因,我也不想每次需要运行脚本时都将NodeJS作为外部可执行文件运行。我需要将NodeJS保存在内存中,并在整个过程周期中在同一命名空间中运行脚本。
也许有一些NodeJS的特别版就是为了这个目的?或者我可以这样编译它?
下面是一个使用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("%sn", *ascii);
return 0;
}
发件人:https://developers.google.com/v8/get_started
您需要的是V8 javascript引擎。查看此处了解更多详细信息。。。
This document discusses these concepts further and introduces others that are key to embedding V8 within your own C++ application.
使用nodejs的目的可能是查看它的源代码,了解如何在V8引擎的基础上构建。
这里有一个快速的例子。
为什么不探索Node的内部,并"复制"它正在做的事情。然后你可以在V8的基础上构建你的应用程序。毕竟,Node.JS只是V8和几个库(I/O)之上的一层,用于提供额外的功能。