📜  为什么我们需要 Node.js 中的 C++ 插件?

📅  最后修改于: 2022-05-13 01:56:33.777000             🧑  作者: Mango

为什么我们需要 Node.js 中的 C++ 插件?

在本文中,我们将了解为什么我们需要 NodeJS 中的 C++ 插件。

  • Node.js 插件是动态链接的共享对象,用 C++ 编写。
  • 它可以使用 require()函数加载到 Node.js 中,也可以像普通 Node.js 模块一样使用。
  • 它主要用于在 Node.js 中运行的 JavaScript 和 C/C++ 库之间提供接口。

为什么我们需要 C++ 插件?

  • 它提供了进行密集、并行和高精度计算的机会。
  • 它还提供了在 NodeJS 中使用 C++ 库的机会。
  • 我们可以集成一个用 C/C++ 编写的第三方库,直接在 NodeJS 中使用。
  • 在较大的值或计算上,C++ 的性能要好得多。

先决条件:

  • Node基础知识
  • 已安装 Node.js(版本 12+)。
  • 已安装 Npm(版本 6+)。

模块安装:使用以下命令安装所需的模块。

npm i -g  node-gyp

文件夹结构:它看起来像这样。

现在使用以下代码创建 binding.gyp、calculate.cc 文件。

文件名:binding.gyp

{
  "targets": [
      {
          "target_name": "calculate", // Name of C++ Addons.
          "sources": [ "calculate.cc" ] // Source of C++ file.
      }
  ]
}
calculate.cc
#include 
#include 
  
namespace calculate {
     using v8:: FunctionCallbackInfo;
     using v8 :: Isolate;
     using v8 :: Local;
     using v8 :: Object;
     using v8 :: Number;
     using v8 :: Value;
  
     // C++ add function.
     void Sum(const FunctionCallbackInfo&args)
     {
         Isolate* isolate = args.GetIsolate();
         int i;
         double x = 3.141526, y = 2.718;
         for(i=0; i<1000000000; i++)
         {
             x += y;
         }
  
         auto total = Number::New(isolate,x);
         args.GetReturnValue().Set(total);
     }
  
     // Exports our method
     void Initialize(Local exports) {
         NODE_SET_METHOD(exports, "calc", Sum);
     }
  
     NODE_MODULE(NODE_GYP_MODULE_NAME,Initialize);
 }

app.js
// Require addons
const calculate = require('./build/Release/calculate');
  
// Javascript add function.
function calc() {
  
    // Two variables.
    let i, x = 3.141526, y = 2.718;
    for (i = 0; i < 1000000000; i++) {
        x += y;
  
    }
    let total = x;
    return total;
}
  
console.time('c++');
calculate.calc();
console.timeEnd('c++');
  
console.time('js');
calc();
  
console.timeEnd('js');


应用程序.js

// Require addons
const calculate = require('./build/Release/calculate');
  
// Javascript add function.
function calc() {
  
    // Two variables.
    let i, x = 3.141526, y = 2.718;
    for (i = 0; i < 1000000000; i++) {
        x += y;
  
    }
    let total = x;
    return total;
}
  
console.time('c++');
calculate.calc();
console.timeEnd('c++');
  
console.time('js');
calc();
  
console.timeEnd('js');

运行应用程序的步骤:要构建和配置,请运行以下命令。

node-gyp configure build 
node app.js

输出:

c++: 1.184s
js: 1.207s