最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js調(diào)用C++開發(fā)的模塊實(shí)例

 更新時(shí)間:2015年07月03日 11:52:46   投稿:junjie  
這篇文章主要介紹了node.js調(diào)用C++開發(fā)的模塊實(shí)例,在node的程序中,如果有大數(shù)據(jù)量的計(jì)算,處理起來比較慢,可以用C++來處理,然后通過回調(diào)(callback的形式),返回給node,需要的朋友可以參考下

如何用C++和node交互,在node的程序中,如果有大數(shù)據(jù)量的計(jì)算,處理起來比較慢,可以用C++來處理,然后通過回調(diào)(callback的形式),返回給node。先回顧一下正統(tǒng)的用 C++ 開發(fā) native 模塊的方法

#include <node.h> 
#include <v8.h> 
using namespace v8; 
 
// 這里是 hello 函數(shù)的 C++ 實(shí)現(xiàn)部分 
Handle<Value> Method(const Arguments& args) { 
 HandleScope scope; 
 return scope.Close(String::New("world")); 
} 
 
// 這里是模塊的初始化函數(shù),必須有 
void init(Handle<Object> exports) { 
 exports->Set(String::NewSymbol("hello"), 
   FunctionTemplate::New(Method)->GetFunction()); 
} 
 
// 這里定義本模塊的名字和初始化函數(shù) 
NODE_MODULE(hello, init)

這個(gè)模塊用Node 寫的話,是這樣的:

exports.hello = function() { 
 return 'world'; 
};


為了編譯 C++ 這個(gè)模塊,還需要一個(gè) JSON 格式的 binding.gyp 文件,來定義編譯的細(xì)節(jié)。 
{ 
 "targets": [ 
  { 
   "target_name": "hello", 
   "sources": [ "hello.cpp" ] 
  } 
 ] 
}

執(zhí)行 node-gyp configure build  就直接編譯了。

node test.js: 
var addon = require('./build/Release/hello'); 

console.log(addon.hello()); 

 就輸出結(jié)果。

如此node就可以直接調(diào)用C++編寫的程序。

對(duì)上面程序的解釋:在hello.cc 中,我們首先創(chuàng)建了一個(gè)函數(shù)Method, 此函數(shù)返回一個(gè)"hello,world"的字符串,后面我們又創(chuàng)建了一個(gè)init的函數(shù),作為一個(gè)初始化函數(shù),我們?nèi)フ{(diào)用了一個(gè)函數(shù)

最后面,我們將這個(gè)模塊綁定為:NODE_MODULE(hello, init)

在官網(wǎng)中指出,所有的node的插件必須輸出一個(gè)初始化的函數(shù),也就是說如下代碼是在每個(gè)模塊都必須有的,固定格式。

void Initialize (Handle<Object> exports); 
NODE_MODULE(module_name, Initialize) 

其中 module_name 必須對(duì)應(yīng)上binding.gyp中的 target_name 就可以了。

經(jīng)過了node-gyp configure build 編譯以后會(huì)在當(dāng)前文件下生成一個(gè)build 的新的文件夾。我們通過在test.js中去引用這個(gè)build的結(jié)果,就可以調(diào)用C++的寫的程序了。

相關(guān)文章

  • 使用nvm進(jìn)行多個(gè)nodejs版本的統(tǒng)一管理

    使用nvm進(jìn)行多個(gè)nodejs版本的統(tǒng)一管理

    隨著前端項(xiàng)目的越來越多,不同項(xiàng)目使用的nodejs版本可能不一樣,導(dǎo)致在切換不同項(xiàng)目時(shí)需要更換不同的nodejs版本,非常麻煩,本次推薦使用nvm進(jìn)行多個(gè)nodejs版本的統(tǒng)一管理,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12
  • 一文帶你了解Node.js有哪些架構(gòu)模式

    一文帶你了解Node.js有哪些架構(gòu)模式

    Node.js 憑借其非阻塞、事件驅(qū)動(dòng)的架構(gòu),已成為構(gòu)建各種應(yīng)用程序的流行選擇,使用 Node.js 進(jìn)行開發(fā)時(shí),選擇正確的架構(gòu)模式來滿足項(xiàng)目需求至關(guān)重要,在本文中,我們將探討幾種 Node.js 架構(gòu)模式并提供示例來說明它們的用法,需要的朋友可以參考下
    2023-09-09
  • Node.JS 循環(huán)遞歸復(fù)制文件夾目錄及其子文件夾下的所有文件

    Node.JS 循環(huán)遞歸復(fù)制文件夾目錄及其子文件夾下的所有文件

    在Node.js中,要實(shí)現(xiàn)目錄文件夾的循環(huán)遞歸復(fù)制也非常簡單,使用fs模塊即可,僅需幾行,而且性能也不錯(cuò),我們先來實(shí)現(xiàn)文件的復(fù)制,需要的朋友可以參考下
    2017-09-09
  • nodejs教程之入門

    nodejs教程之入門

    本文是nodejs教程系列的入門篇,主要講述nodejs的特點(diǎn)、模塊機(jī)制/CommonJs(模塊引用、模塊定義、模塊標(biāo)識(shí)、模塊實(shí)現(xiàn))、包與NPM等知識(shí),非常的詳細(xì),這里推薦給大家作為入門的文章。
    2014-11-11
  • NodeJS Web應(yīng)用監(jiān)聽sock文件實(shí)例

    NodeJS Web應(yīng)用監(jiān)聽sock文件實(shí)例

    這篇文章主要介紹了NodeJS Web應(yīng)用監(jiān)聽sock文件實(shí)例,本文講解 NodeJS 的 TCP 和 HTTP 監(jiān)聽 Domain Socket 文件例子,需要的朋友可以參考下
    2015-02-02
  • 實(shí)時(shí)通信WebSocket的原理和工作過程

    實(shí)時(shí)通信WebSocket的原理和工作過程

    WebSocket持久連接使得服務(wù)器可以主動(dòng)向客戶端推送數(shù)據(jù),而不需要等待客戶端的請(qǐng)求,是一種專門設(shè)計(jì)用于實(shí)現(xiàn)持久連接的協(xié)議,WebSocket的持久連接特性使其成為實(shí)時(shí)性要求高的應(yīng)用的理想選擇,如在線聊天、實(shí)時(shí)游戲、數(shù)據(jù)監(jiān)控等
    2023-12-12
  • Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程

    本文主要介紹了Node.js(v16.13.2版本)安裝及環(huán)境配置的圖文教程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • nodejs簡單實(shí)現(xiàn)中英文翻譯

    nodejs簡單實(shí)現(xiàn)中英文翻譯

    這篇文章主要介紹了nodejs簡單實(shí)現(xiàn)中英文翻譯的方法和示例,雖然還存在著不小的問題,但是也算是基本能用了,這里推薦給大家。
    2015-05-05
  • webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法

    webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法

    今天小編就為大家分享一篇webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node后端與Vue前端跨域處理方法詳解

    node后端與Vue前端跨域處理方法詳解

    從目前我了解的情況來看,前后端跨域使用的方式有很多種,這里記錄我使用最順手的一種,即在后端使用cors跨域,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

沙洋县| 界首市| 淅川县| 游戏| 百色市| 喀喇沁旗| 奉化市| 南充市| 炎陵县| 乡宁县| 石首市| 博客| 高平市| 漳州市| 旺苍县| 盘山县| 九江市| 卢氏县| 砀山县| 贡觉县| 广南县| 三亚市| 宁明县| 滕州市| 拉孜县| 登封市| 桐乡市| 深水埗区| 女性| 仲巴县| 贡觉县| 含山县| 沙雅县| 峨边| 高邮市| 新平| 丰城市| 错那县| 黄大仙区| 苏尼特左旗| 随州市|