前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用node-gyp编写简单的node原生模块

使用node-gyp编写简单的node原生模块

作者头像
w4ngzhen
发布2023-10-17 10:19:44
4540
发布2023-10-17 10:19:44
举报
文章被收录于专栏:编译思想

通过样例,让我们了解如何编写一个node的原生模块。当然,这篇文章还有一个目的,是为了方便以后编写关于node-gyp的文章,搭建初始环境。

基于node-addon-api

基于node-addon-api的nodejs插件,使用的是node的头文件:#include <node.h>

hello_world.cc

代码语言:javascript
复制
#include <node.h>

void Method(const v8::FunctionCallbackInfo<v8::Value>& args) {
  v8::Isolate* isolate = args.GetIsolate();
  args.GetReturnValue().Set(v8::String::NewFromUtf8(
      isolate, "world").ToLocalChecked());
}

void Initialize(v8::Local<v8::Object> exports) {
  NODE_SET_METHOD(exports, "hello", Method);
}

NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)

binding.gyp

代码语言:javascript
复制
{
  "targets": [
    {
      "target_name": "hello_world",
      "sources": [ "hello_world.cc" ]
    }
  ]
}

index.js

代码语言:javascript
复制
const binding = require('./build/Release/hello_world');

console.log(binding.hello());

package.json

代码语言:javascript
复制
...  
  "scripts": {
    "build": "node-gyp configure && node-gyp build",
    "run:demo": "node index.js"
  },
...

整体结构

按照如下命令依次运行:

代码语言:javascript
复制
$ npm run build
// 使用node-gyp配置并构建
$ npm run run:demo
// 运行Demo

输出如下:

代码语言:javascript
复制
D:\Projects\node-addon-demo>npm run run:demo

> node-addon-demo@1.0.0 run:demo
> node index.js

world

附上GitHub地址:w4ngzhen/node-addon-demo (github.com),方便以后快速完成环境搭建。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-252,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于node-addon-api
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档