如何混合原生插件和模块?

How to mix Native Addon and Modules?

我使用 node-addon-api 为 C++ 库开发了一个包装器。 我想用那些 C++ 函数导出一些节点函数。

有些函数可以用 Javascript 编码,不需要用 C++ 编码。

Napi::Object Init(Napi::Env env, Napi::Object exports) {
    exports.Set(Napi::String::New(env, "hello"), Napi::Function::New(env, Hello));
    return exports;
}

如何混合使用napi和nodeJs功能?

混用"native"函数和纯JS函数没问题

假设您的项目中有一个 index.js 作为主文件

package.json

{
  "name": "mixedModule",
  "version": "1.0.0",
  "description": "A mixture of functions created via C++ or JS",
  "main": "index.js",
  "typings": "index.d.ts",
  "scripts": {
  ...
  }
}

您可以自由决定要(重新)导出哪些函数:

const nativeModule = require("bindings")("myModule.node");

function jsFunction() {
    ...
}

module.exports = {
  nativeFunction: nativeModule.nativeFunction,
  jsFunction
}