【问题标题】:Node.js Addon Require multiple times new instaceNode.js 插件需要多次新实例
【发布时间】:2020-03-11 14:32:08
【问题描述】:

如何避免使用 require('c++addon') 进行缓存。我有一个插件,但每次都想拥有一个新插件。

例如

for(...)
 addon[i] = require('addon'); // I want a new one everytime
 addon[i].somefunction(); //  

谢谢。

【问题讨论】:

    标签: javascript node.js node.js-addon


    【解决方案1】:

    您将不得不重构您的插件模块,以便它公开一个函数来构造这些实例,例如

    const myAddon = require('addon');
    objects = [myAddon.create(), myAddon.create(), myAddon.create()];
    objects[0].somefunction();
    

    【讨论】:

    • 我还以为有别的办法
    【解决方案2】:

    这是一个创建本地对象的多个实例的示例代码。 https://github.com/nodejs/node-addon-examples/blob/master/6_object_wrap/napi/myobject.cc

    如果你正在处理原生模块,那么原生模块也必须编写一些额外的代码来创建一个新实例。除了创建新实例之外,本机模块还需要处理实例的生命周期管理。典型的 JavaScript 代码有两种创建对象的方式。一种是使用其构造函数,另一种是使用函数调用。负责创建新实例的本机模块也必须对这两者进行不同的处理。您可以通过参考有关以下内容的文档以及示例代码https://nodejs.org/api/n-api.html

    获得更多见解
    • 生命周期管理:
      napi_ref
      napi_create_reference()

    • 检查是否是构造函数调用
      napi_get_new_target()

    • 基于现有的原生实例化一个新的 JavaScript 对象 对象(napi_value 类型)
      napi_new_instance()

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多