Node.js 是否可以将NodeJ作为脚本引擎包含在可执行文件中?

Node.js 是否可以将NodeJ作为脚本引擎包含在可执行文件中?,node.js,Node.js,我有一个用C编写的应用程序。我希望在此应用程序中执行用JavaScript编写的用户定义脚本,并允许这些脚本与映射到JavaScript命名空间的内部C变量一起工作 是否可以使用NodeJS将其编译为脚本引擎 我知道我也可以这样做:运行NodeJS并使用我的C代码作为NodeJS的库,将C变量正确绑定到JS。但这是不可接受的,因为我的应用程序有一个GUI和许多其他模块作为libs包含,并且很难重写代码以作为NodeJS lib运行 由于性能原因,每次需要运行脚本时,我也不想将NodeJS作为外部

我有一个用C编写的应用程序。我希望在此应用程序中执行用JavaScript编写的用户定义脚本,并允许这些脚本与映射到JavaScript命名空间的内部C变量一起工作

是否可以使用NodeJS将其编译为脚本引擎

我知道我也可以这样做:运行NodeJS并使用我的C代码作为NodeJS的库,将C变量正确绑定到JS。但这是不可接受的,因为我的应用程序有一个GUI和许多其他模块作为libs包含,并且很难重写代码以作为NodeJS lib运行

由于性能原因,每次需要运行脚本时,我也不想将NodeJS作为外部可执行文件运行。我需要将nodej保存在内存中,并在整个进程周期中在同一名称空间中运行脚本


也许有一些特别版的NodeJS就是为了这个目的?或者我可以编译成这样?

您需要的是V8 javascript引擎。查看更多详细信息

<>代码>本文进一步讨论了这些概念,并介绍了在VC++应用程序中嵌入V8的关键。 您可以使用nodejs的目的可能是查看它的源代码,了解如何在V8引擎之上构建


这是一个简单的例子。

为什么不研究一下Node的内部结构并“复制”它所做的事情呢。然后你可以在V8上构建你的应用程序。毕竟,Node.JS只是V8和几个库(I/O)之上的一个层,用于提供附加功能。

下面是一个使用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;
}

发件人:

也许您想在不使用nodejs的情况下使用它?我听说nodejs是服务器端采用的V8。它离原来的V8有多远?是否有一个在其他东西(如我想要的)中使用谷歌V8引擎的例子?[当然除了Chrome]在下面添加了示例。目前,node的最新版本使用v8版本3.6.6.24。是否有这种集成的“简单”示例?要了解V8集成,NodeJS是一个相当繁重的问题。我更新了我的答案,并添加了“入门”链接。只要浏览一下谷歌的文档,我想你会在那里找到你需要的一切。太棒了!这似乎不是我想要的。你能给我一个关于V8的建议吗?我可以在嵌入式平台上运行它吗?比如ARM 500 MHz和128 Mb内存?还有一个问题:NodeJS有一个内置的web服务器。V8没有。我需要一个网络服务器。我应该使用像libmicrohttpd这样的东西,还是仍然可以包含一些NodeJS来服务HTTP?我真的不确定…关于硬件,它在手机上运行,因此,我看不出它为什么不能在500Mhz的ARM上运行。这要么不允许使用nodejs的许多有用的库,要么在nodejs发展过程中需要与nodejs保持同步,以保持与库的兼容性。