【发布时间】: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
如何避免使用 require('c++addon') 进行缓存。我有一个插件,但每次都想拥有一个新插件。
例如
for(...)
addon[i] = require('addon'); // I want a new one everytime
addon[i].somefunction(); //
谢谢。
【问题讨论】:
标签: javascript node.js node.js-addon
您将不得不重构您的插件模块,以便它公开一个函数来构造这些实例,例如
const myAddon = require('addon');
objects = [myAddon.create(), myAddon.create(), myAddon.create()];
objects[0].somefunction();
【讨论】:
这是一个创建本地对象的多个实例的示例代码。 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()
【讨论】: