Node.js Addon(1)

来源:互联网 发布:淘宝商品资质图片 编辑:程序博客网 时间:2024/04/30 01:29

最新的node.js Addon和以前不同,外接函数使用void FunctionName(const FunctionCallbackInfo<Value>& args)。

形参和返回都使用args来获得:

1、FunctionCallbackInfo重载了'[]',可以通过'[]'取出。取出时应先对args的长度(Length())进行判断。

获取isolate,全局管理指针。

// 使用 HandleScope 来管理生命周期Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);
Local<XXX> local = args[0]->ToXXX(isolate);

最新的转换函数都添加了isolate参数,方便管理。

args所转换的数据只能是Local(局部)变量,如果需要长期保存,应转换为Persistent(全局)变量。

  • bool BooleanValue()
  • int32_t Int32Value()
  • int64_t IntegerValue()
  • double NumberValue()
  • Local<Boolean> ToBoolean()
  • Local<String> ToString()
  • Local<Int32> ToInt32()
  • Local<Integer> ToInteger()
  • Local<Number> ToNumber()
  • Local<Object> ToObject()
  • Local<Uint32> ToUint32()

两个特殊参数转换:

输入参数为函数:需要通过Local<Function>::Cast进行转换,而没有To函数。并且获取到的参数为Local变量,函数结束后系统会收回变量,所以如果需要保持函数指针,在其他地方使用,必须转换为Persistent变量。

输入参数为类,JSON,数组:这几个就是Object,可以通过ToObject()获取。

2、args.GetReturnValue().Set()返回值函数,没有调用这个函数返回undefined,空参数调用为没有返回值。


加载初始化函数void Initialize(Handle<Object> exports)。

模块注册宏NODE_MODULE(AddonCore, Initialize)

函数注册宏NODE_SET_METHOD(exports, "FunctionName",FunctionName);


在初始化函数中注册函数,使C函数能在JavaScript上直接使用。

0 0
原创粉丝点击