91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么編寫nodejs c++插件

發布時間:2021-11-24 11:52:17 來源:億速云 閱讀:178 作者:iii 欄目:大數據

這篇文章主要介紹“怎么編寫nodejs c++插件”,在日常操作中,相信很多人在怎么編寫nodejs c++插件問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么編寫nodejs c++插件”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

環境

1 ubuntu18.04。
2 安裝nodejs v12和npm install node-gyp -g。 

寫代碼

寫一個測試的例子。test.cc

// hello.cc using N-API
#include <node_api.h>

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
 

binding.gyp

{
  "targets": [
    {
      "target_name": "test",
      "sources": [ "./test.cc" ]
    }
  ]
}
 

然后執行npm init。內容如下

{
  "name": "test-addons",
  "version": "1.0.1",
  "description": "",
  "main": "./build/Release/test.node",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "install": "node-gyp rebuild"
  },
  "author": "",
  "license": "ISC",
  "gypfile": true
}
 

我們主要看和插件相關的兩個配置

"main": "./build/Release/test.node",
"gypfile": true
 

main定義了插件的入口,因為我們沒有為用戶提供js的api。而是直接提供.node文件,所以這里定義的路徑為插件的路徑。gypfile標記這個包是一個c++插件,用戶在使用npm安裝這個包的時候,就會執行node-gyp rebuild,針對用戶系統環境,生成對應的二進制代碼。有些文章介紹了需要在scripts的值里加入"install": "node-gyp rebuild",npm文檔說了如果包下面有.gyp文件的話,默認就會執行這個rebuild操作。

"scripts":{"install": "node-gyp rebuild"}
If there is a binding.gyp file in the root of your package and you have not defined an install or preinstall script, npm will default the install command to compile using node-gyp.

一切準備就緒,我們可以執行npm publish發布了(記得先登錄npm)。 

測試

我們首先安裝這個包。npm install test-addons --unsafe-perm,然后寫代碼測試一下。

var addon = require("test-addons/build/Release/test");
console.log(addon.hello());                        
 

我們發現,這樣顯然很麻煩。所以我們最好還是在包里為用戶提供js模塊的接口。我們在包里增加index.js

var addon = require("./build/Release/test");
module.exports = addon;                    
 

修改測試代碼

var addon = require("test-addons");
console.log(addon.hello());

到此,關于“怎么編寫nodejs c++插件”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和田县| 浦城县| 喀喇| 镇巴县| 炎陵县| 历史| 台安县| 长治市| 河间市| 镇巴县| 德兴市| 皮山县| 仪征市| 洛川县| 康平县| 原阳县| 旬阳县| 交口县| 海盐县| 宜昌市| 龙川县| 永靖县| 凤山市| 玉树县| 方山县| 台北市| 疏勒县| 合江县| 香格里拉县| 浦北县| 福鼎市| 东宁县| 墨江| 奉节县| 平乐县| 舞阳县| 武宁县| 高平市| 水城县| 临泉县| 深水埗区|