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

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

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

如何用C++和node交互,在node的程序中,如果有大數(shù)據(jù)量的計(jì)算,處理起來(lái)比較慢,可以用C++來(lái)處理,然后通過(guò)回調(diào)(callback的形式),返回給node。先回顧一下正統(tǒng)的用 C++ 開(kāi)發(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 寫(xiě)的話,是這樣的:

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


為了編譯 C++ 這個(gè)模塊,還需要一個(gè) JSON 格式的 binding.gyp 文件,來(lái)定義編譯的細(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++編寫(xiě)的程序。

對(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ù),也就是說(shuō)如下代碼是在每個(gè)模塊都必須有的,固定格式。

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

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

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

相關(guān)文章

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

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

    隨著前端項(xiàng)目的越來(lái)越多,不同項(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)行開(kāi)發(fā)時(shí),選擇正確的架構(gòu)模式來(lái)滿足項(xiàng)目需求至關(guān)重要,在本文中,我們將探討幾種 Node.js 架構(gòu)模式并提供示例來(lái)說(shuō)明它們的用法,需要的朋友可以參考下
    2023-09-09
  • Node.JS 循環(huán)遞歸復(fù)制文件夾目錄及其子文件夾下的所有文件

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

    在Node.js中,要實(shí)現(xiàn)目錄文件夾的循環(huán)遞歸復(fù)制也非常簡(jiǎn)單,使用fs模塊即可,僅需幾行,而且性能也不錯(cuò),我們先來(lái)實(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)聽(tīng)sock文件實(shí)例

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

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

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

    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)境配置的圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • nodejs簡(jiǎn)單實(shí)現(xiàn)中英文翻譯

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

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

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

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

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

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

最新評(píng)論

安多县| 广河县| 凤庆县| 临汾市| 祁连县| 云浮市| 湟中县| 延边| 云阳县| 交口县| 漳平市| 洱源县| 呼伦贝尔市| 神农架林区| 大连市| 武城县| 南京市| 洮南市| 安图县| 包头市| 哈密市| 曲周县| 剑河县| 呈贡县| 赤壁市| 华容县| 海林市| 克什克腾旗| 景宁| 孝感市| 乌拉特后旗| 镇安县| 罗平县| 山阴县| 江口县| 大同市| 定边县| 桐柏县| 普安县| 历史| 静安区|