> 文档中心 > 【OpenHarmony】napi基本用法----HelloWorld

【OpenHarmony】napi基本用法----HelloWorld

文章目录

创建Hello.cc文件

// hello.cc using Node-API#include namespace demo {napi_value Method(napi_env env, napi_callback_info args) {  napi_value greeting;  napi_status status;  status = napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &greeting);  if (status != napi_ok) return nullptr;  return greeting;}napi_value init(napi_env env, napi_value exports) {  napi_status status;  napi_value fn;  status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn);  if (status != napi_ok) return nullptr;  status = napi_set_named_property(env, exports, "hello", fn);  if (status != napi_ok) return nullptr;  return exports;}NAPI_MODULE(NODE_GYP_MODULE_NAME, init)}  // namespace demo
  • 每一个node.js的插件,都必须暴露如下模式的初始化函数:
void Initialize(Local<Object> exports);NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
  • 参数module_name除了后缀.node不一样之外,必须和最终的二进制文件名称相匹配。
  • 上述列子中,初始化函数是initmodule_name使用了NODE_GYP_MODULE_NAME宏,该宏在使用node-gyp进行编译时,会保证二进制文件名称被当作第一个参数传递给NODE_MODULE

创建binding.gyp

{  "targets": [    {      "target_name": "addon",      "sources": [ "hello.cc" ]    }  ]}
  • 该文件是json格式的,被工具node-gyp所使用,用来编译我们的插件。

编译插件

  • 在我们的项目目录下执行 node-gyp configure build编译我们的插件。
  • 编译完成后在目录./build/Release下面会生成我们的插件的二进制文件addon.node

测试

  • 编写测试文件如下
// hello.jsconst addon = require('./build/Release/addon');console.log(addon.hello());// Prints: 'world'
  • 执行测试文件node hello.js,会打印world

全部代码在这里