Node.js通用计算11--Node.js调用C/C++(hello world实现分析)

一、 hello world 源代码分析

下面一段时间我们将专注于node-addon-api的用法,书接上回,我们首先从hello world 例子出发,具体看看node-addon是如何具体实现的。首先示例代码如下:

#include <napi.h>

Napi::String Method(const Napi::CallbackInfo& info) {
   
   
  Napi::Env env = info.Env();
  return Napi::String::New(env, "world");
}

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

NODE_API_MODULE(hello, Init)

我们一句句分析:

1.头文件

node-addon-api项目头文件为:

#include <napi.h>

所有node-addon-api封装的宏定义、类全部在这个头文件中定义。其位置是在node-addon-api下面:

fan@fan-virtual-machine:~/work/js2$ ls node_modules/node-addon-api/napi.h -la 
-rw-rw-r-- 1 fan fan 119287 1217 21:18 napi.h

2.定义返回"hello"字符串的函数

Napi::String Method(const Napi::CallbackInfo& info) {
   
   ...}

这个语句定义了一个 名为 “Method”的函数,返回值 Napi::String 类型,参数是 Napi::CallbackInfo& 类型。 Napi::String 是 js中 string 类型在C++中对应的数据类型,Napi::CallbackInfo 是一个包含上游 Node.js运行时上下文环境的一个类型,其最重要的是包含了JS调用函数传递进来的参数。其参数可以用 info[0] info[1] 的形式获取。
Napi::Env 是js脚本运行环境,几乎每一个addon函数都需要指定Js运行环境,对于初级玩家的我们,只需要把CallbackInfo 中的 env取出来,传递下去即可。
分析了半天,这个函数实际上等同于非js环境下的

string Method()
{
   
    return "hello";}

3.定义一个初始化函数

Napi::Object Init(Napi::Env env, Napi::Object exports) {
   
   ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值