国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Nodejs系列之使用V8編寫C++插件

開發 后端
本文介紹在寫c++插件時,簡單又常用的寫法,其實本質上,寫插件的難處在于底層的能力和對libuv、v8的了解。話不多說,直接看代碼。

[[392755]]

雖然現在大部分情況都是使用n-api來編寫插件,但是底層畢竟是v8(和libuv),使用v8編寫簡單的插件,同時熟悉v8的使用。

本文介紹在寫c++插件時,簡單又常用的寫法,其實本質上,寫插件的難處在于底層的能力和對libuv、v8的了解。話不多說,直接看代碼。

  1. #include <node.h> 
  2.  
  3.  
  4. namespace demo { 
  5.  
  6.  
  7. using v8::FunctionCallbackInfo; 
  8. using v8::Isolate; 
  9. using v8::Local
  10. using v8::Object; 
  11. using v8::String; 
  12. using v8::Value; 
  13. using v8::FunctionTemplate; 
  14. using v8::Function
  15. using v8::Number; 
  16. using v8::MaybeLocal; 
  17. using v8::Context; 
  18. using v8::Int32; 
  19.  
  20.  
  21. static int seq; 
  22. // 定義一個工具函數,生成seq 
  23. void GenSeq(const FunctionCallbackInfo<Value>& args) { 
  24.     Isolate* isolate = args.GetIsolate(); 
  25.     args.GetReturnValue().Set(Number::New(isolate, ++seq)); 
  26.  
  27.  
  28. // 定義一個加法函數 
  29. void Add(const FunctionCallbackInfo<Value>& args) { 
  30.     Isolate* isolate = args.GetIsolate(); 
  31.     int a = args[0].As<Int32>()->Value(); 
  32.     int b = args[1].As<Int32>()->Value(); 
  33.     args.GetReturnValue().Set(Number::New(isolate, a + b)); 
  34.  
  35.  
  36. void Initialize( 
  37.   Local<Object> exports, 
  38.   Local<Value> module, 
  39.   Local<Context> context 
  40. ) { 
  41.   Isolate* isolate = context->GetIsolate(); 
  42.   // 新建一個函數模版 
  43.   Local<FunctionTemplate> func = FunctionTemplate::New(isolate); 
  44.   // 新建一個字符串表示函數名 
  45.   Local<String> zaylee = String::NewFromUtf8(isolate, "zaylee", v8::NewStringType::kNormal).ToLocalChecked(); 
  46.   // 設置函數名 
  47.   func->SetClassName(zaylee); 
  48.   // 設置原型屬性 
  49.   func->PrototypeTemplate()->Set(isolate, "protoField", Number::New(isolate, 1)); 
  50.   // 設置對象屬性 
  51.   func->InstanceTemplate()->Set(isolate, "instanceField", Number::New(isolate, 2)); 
  52.   func->InstanceTemplate()->Set(isolate, "add", FunctionTemplate::New(isolate, Add)); 
  53.   // 設置函數對象本身的屬性 
  54.   func->Set(isolate, "funcField", Number::New(isolate, 3)); 
  55.   // 根據函數模版創建一個函數 
  56.   Local<Function> ret = func->GetFunction(context).ToLocalChecked(); 
  57.   Local<String> Demo = String::NewFromUtf8(isolate, "Demo", v8::NewStringType::kNormal).ToLocalChecked(); 
  58.   // 導出函數 
  59.   exports->Set(context, Demo, ret).Check(); 
  60.   // 導出工具函數 
  61.   NODE_SET_METHOD(exports, "genSeq", GenSeq); 
  62.  
  63.  
  64. NODE_MODULE_CONTEXT_AWARE(NODE_GYP_MODULE_NAME, Initialize) 
  65.  
  66.  
  67. }  // namespace demo 

寫個測試例子

  1. const { Demo, genSeq } = require('./build/Release/test.node'); 
  2. const demo = new Demo(); 
  3. console.log('demo對象:', demo, '\n'); 
  4. console.log('原型屬性:', demo.protoField, '\n'); 
  5. console.log('執行add方法:', demo.add(1,2), '\n');   
  6. console.log('執行seq方法:', genSeq(), genSeq(), '\n'); 

最后編寫編譯配置

  1. {   
  2. "targets": [   
  3.   {   
  4.     "target_name""test",   
  5.     "sources": [ "./test.cc" ]   
  6.   }   
  7. ]   

看起來非常簡單,大概的流程如下

  1. npm install -g node-gyp 
  2. node-gyp configure 
  3. node-gyp build 
  4. node test.js 

拓展nodejs的方式很多,插件是一種,直接修改內核也是一種,之前有介紹過如何修改內核,有興趣的同學也可以看一下。

 

責任編輯:武曉燕 來源: 編程雜技
相關推薦

2021-08-29 18:34:44

編譯V8C++

2020-09-27 07:32:18

V8

2010-07-20 16:35:52

V8JavaScript瀏覽器

2022-06-02 12:02:12

V8C++JavaScript

2025-09-08 01:55:00

2014-11-26 09:51:24

GithubGoogleV8

2023-10-10 10:23:50

JavaScriptV8

2023-03-02 23:09:53

Node.jsC++JS

2020-07-30 12:40:35

CC++編程語言

2022-09-16 08:32:25

JavaC++語言

2023-02-28 07:56:07

V8內存管理

2023-06-05 16:38:51

JavaScript編程語言V8

2011-10-19 13:47:57

ibmdwRationalWAS

2016-10-18 15:18:48

JEECMS V*javaCMS系統

2011-09-08 10:21:50

Node.js

2010-01-14 14:40:21

C++代碼

2021-05-28 05:30:55

HandleV8代碼

2022-04-29 08:00:51

V8垃圾回收

2010-08-31 11:42:03

DB2MDC

2022-10-24 09:11:05

TypeScriptV8
點贊
收藏

51CTO技術棧公眾號

av资源中文在线| 在线日韩第一页| 国产精品任我爽爆在线播放| 成人午夜在线影院| 免费观看成人av| 日韩精品影音先锋| 久久av免费一区| 日韩三级电影网| 爱情电影社保片一区| 一区二区三区视频播放| 亚洲视频中文字幕| 麻豆av在线播放| 国产综合久久久久久鬼色| 18视频在线观看网站| 亚洲美女在线观看| 在线免费av网站| 欧美日韩午夜影院| 国产一区二区影视| 欧美sm极限捆绑bd| 一区二区亚洲精品| 国产精品福利网| 国产精品99一区二区三| 91影视免费在线观看| 99pao成人国产永久免费视频| 久久亚洲一区二区| 老司机一区二区| 国产免费一区二区三区视频| 欧美国产激情二区三区| 91青娱乐在线视频| 欧美日韩一区国产| 国产夫妻在线| 久久6免费高清热精品| 成人情趣视频网站| 日韩欧美视频一区二区三区四区| 国产精品中文字幕欧美| 性欧美videossex精品| 亚洲午夜久久久久久久久电影院| 99se视频在线观看| 色噜噜国产精品视频一区二区| 偷窥自拍亚洲色图精选| 国产日韩精品久久| 本田岬高潮一区二区三区| 中国国产一级毛片| 日韩三级电影网址| 97品白浆高清久久久久久| 3d蒂法精品啪啪一区二区免费| 麻豆国产欧美日韩综合精品二区| 日批视频在线免费看| 亚洲成人在线免费| 8x8ⅹ拨牐拨牐拨牐在线观看| 欧美激情精品久久久久久蜜臀 | 91精品网站| 久久精品国产成人一区二区三区 | 欧美综合一区第一页| 欧美高清一区| 91视频成人免费| 成人春色激情网| 亚洲成人精品| 91在线免费看网站| 91高清视频在线| 色视频网站在线观看| 欧美在线色视频| 欧美性猛交p30| 色综合天天综合网国产成人网 | 日韩精品视频免费专区在线播放| 五月婷婷视频在线观看| 国产视频一区在线| 91精品电影| 国产在线观看一区二区三区| 久久一区二区三区四区| 国产91一区二区三区| 国产黄色成人av| 色视频www在线播放国产| 日韩va亚洲va欧洲va国产| 任你弄精品视频免费观看| 日韩欧美精品一区二区三区经典| 国产精品福利在线播放| a毛片不卡免费看片| 国产精品免费一区二区三区都可以| 久久99久久99精品免视看婷婷| 女人体1963| 中文字幕在线看视频国产欧美| 亚洲第一黄网| 蜜桃视频免费网站| 日韩一区二区欧美| 美女诱惑黄网站一区| 欧美5-7sexvideos处| 欧美日韩高清区| 国产成人啪免费观看软件 | 97久久久久久| 国产伦理精品不卡| 老司机午夜在线视频| 国产精品久久久久久婷婷天堂| www.av精品| 不卡av影片| 日本一区二区在线| 色婷婷综合五月| 国产成人一区二区三区影院| 鲁一鲁一鲁一鲁一澡| 日韩高清av在线| 亚洲在线观看| 91在线不卡| 国产精品一区视频| 精品美女久久久久久免费| 中文一区二区三区四区| 青青草精品视频在线| 日韩精品久久久久久久玫瑰园| 欧美午夜久久| 毛片免费在线播放| 国产日韩在线精品av| 亚洲欧美日韩电影| 久久精品色综合| 日本不卡一区在线| 欧美在线高清视频| 日韩中文字幕在线视频播放| 久久天天躁日日躁| 欧美日韩亚洲综合一区二区三区| 1024免费在线视频| 全球最大av网站久久| 黄色精品视频网站| 性欧美18~19sex高清播放| 伊人国产在线看一| 免费男女羞羞的视频网站中文字幕| ts人妖另类在线| 精品国产乱码久久久久久郑州公司| 97在线视频免费观看| 亚洲最大中文字幕| 亚洲成av人电影| 最近中文字幕mv第三季歌词| 97在线视频观看| 亚洲人成网站色在线观看| 久久夜色精品国产噜噜av小说| 亚洲免费av网址| 精品国产区一区| 亚洲欧洲一二三| 日本中文在线一区| 成人豆花视频| 国产福利影院在线观看| 中文字幕日韩在线观看| 国产美女精品人人做人人爽 | 欧美性色视频在线| 亚洲精品精品亚洲| 一区二区三区精品| 91老司机福利 在线| 精品一区二区免费| 成人国产精品免费观看视频| 韩国成人在线| 久久亚洲中文字幕无码| 久久精品99久久香蕉国产色戒| 久久久久国产精品麻豆ai换脸| 五月激激激综合网色播| 中文字幕在线视频免费观看| 国产精品二区三区四区| 欧美裸体一区二区三区| 青青草国产成人av片免费| 成年美女黄网站色大片不卡| 日本福利视频在线| 亚州国产精品久久久| 亚洲一线二线三线久久久| 在线精品视频在线观看高清| 日本在线免费中文字幕| 欧洲一区二区日韩在线视频观看免费 | 亚洲女人天堂成人av在线| 成人看片黄a免费看在线| 亚洲精品午夜| 中文乱码字幕高清在线观看| 国产 高清 精品 在线 a| 亚洲成人性视频| 91免费看视频| 97视频热人人精品免费| 在线看女人毛片| 波多野结衣之无限发射| 国产精品777| 日韩一级高清毛片| 久久综合久久鬼色| 水蜜桃久久夜色精品一区| 日本孕妇大胆孕交无码| 免费看a级黄色片| 国产91aaa| 自拍偷拍亚洲精品| 亚洲高清在线精品| 国产麻豆9l精品三级站| 麻豆精品少妇| 黄网站在线免费看| 热久久精品免费视频| 国产伦精品一区二区三区四区视频 | 亚洲精品亚洲人成在线| 欧美边添边摸边做边爱免费| 在线精品一区| 亚洲欧美电影| 91se在线观看| 26uuu成人| 国产精品一区二区三区久久| 亚洲成人av在线播放| 亚洲色图制服丝袜| 日韩电影一区二区三区| 自拍偷拍欧美一区| 性欧美1819sex性高清| 天堂在线一二区| 中文字幕无码精品亚洲35|