Node.js Addons翻译(C/C++扩展)

PS:请先升级Node 6.2.1,Node 升级命令 npm install -g n;n stable.NOde.js扩展是一个通过C/C++编写的动态链接库,并通过Node.js的函数require()函数加载,用起来就像使用一个普通的Node.js模块。它主要为Node与C/C++库之间提供接口。

这样,若一个方法或函数是通过Node扩展实现则变得相当复杂,涉及几个模块与接口的知识:

•v8:一个实现了通过C++库实现了的javascript.V8提供了创建对象机制,回调函数等。V8API文档大多在v8.h头文件中。点我v8在线文档

•libuv:一个实现了Node.js的工作线程和异步行为的平台的事件循环的C库。它还充当了一个跨平台的抽象库,可以简单地POSIX-like式的访问所有主流操作系统系统许多常见任务,例如与文件系统交互、套接字、定时器和系统事件。libuv还提供了一个抽象pthreads-like线程,可以用于更复杂的异步。Node.js的C/C++扩展需要超越标准事件循环。插件作者鼓励去思考如何避免阻塞I/O事件循环和通过libuv非阻塞系统操作、工作线程、用户自定义的线程完成任务密集型工作。

•Node.js内置库:Node.js本身使用了大量的C/C++扩展的API,C/C++扩展时最重要的一个类node:ObjectWrap

•Node.js众多的静态链接库如OpenSSL:Node.js的其它的库在它的源码目录树下的 deps目录。详情请见·Node.js's own dependencies for additional information。点我Node.js官方扩展库示例,这也许是你为Node.js编写C/C++扩展库的起点。只有V8和OpenSSL类经常在Node C/C++扩展中频繁的使用。

Node C/C++扩展第一弹-最新示例Hello World

该示例适用Node.js版本号为V5.0以上。

// hello.js
const addon = require('./build/Release/addon');
console.log(addon.hello()); // 'world'
// hello.cc
#include <node.h>
#include <v8.h>
namespace demo {
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::String;
using v8::Value;
void Method(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}
void init(Local<Object> exports) {
NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(addon, init)
} // namespace demo
// binding.gyp
{
"targets": [
{
"target_name": "addon",
"sources": [ "hello.cc" ]
}
]
} 

node-gyp命令

代码如下:

node-gyp configure build

以上所述是小编给大家介绍的Node.js Addons翻译(C/C++扩展)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Node.js Addons翻译(C/C++扩展)

    PS:请先升级Node 6.2.1,Node 升级命令 npm install -g n;n stable.NOde.js扩展是一个通过C/C++编写的动态链接库,并通过Node.js的函数require()函数加载,用起来就像使用一个普通的Node.js模块.它主要为Node与C/C++库之间提供接口. 这样,若一个方法或函数是通过Node扩展实现则变得相当复杂,涉及几个模块与接口的知识: •v8:一个实现了通过C++库实现了的javascript.V8提供了创建对象机制,回调函数等.V8AP

  • 使用Node.js为其他程序编写扩展的基本方法

     准备开始 首先我们用下面的目录结构来创建一个节点通知(node-notify)文件夹.   复制代码 代码如下: . |-- build/                   # This is where our extension is built. |-- demo/ |   `-- demo.js              # This is a demo Node.js script to test our extension. |-- src/ |   `-- node_gtkno

  • 运行Node.js的IIS扩展iisnode安装配置笔记

    今年年初打算用Node.js基于Express框架重写博客程序,从此告别ASP.NET.然而,我目前用的VPS是Windows Server系统.IIS服务器,如果让Express和IIS都监听80端口,明显会产生冲突.幸好,有一个叫做iisnode的扩展可以把Node.js程序托管到IIS.而且,这样托管之后也意味着可以使用IIS里面的各种功能(进程管理.GZip压缩.日志.缓存.权限控制.域名绑定等). 要使用iisnode,得安装: 1.Node.js 2.IIS的URL Rewrite模

  • 用C++编写扩展node.js(node-ffi版)

    用C++扩展node.js(node-ffi版) 0.先安装node.js和python(2.7).请参考: https://nodejs.org/ https://www.python.org 1.新建一个demo项目: 创建demo目录,并进入其中,然后运行下面命令. mkdir demo cd demo npm init 运行npm init时,之后会生成一个package.json(具体内容与输入参数有关): { "name": "demo", "

  • Node.js文件系统fs扩展fs-extra说明

    目录 安装 使用 Async 方法 方法 copy() emptyDir() ensureFile() ensureDir() move() outputFile() outputJson() writeJson() pathExists() readJson() remove() fs-extra fs-extra 是fs 的扩展,继承了 fs 所有方法并为这些方法添加了 promise 语法 安装 npm i fs-extra 使用 const fse = require('fs-extra

  • 使用Node.js和Socket.IO扩展Django的实时处理功能

    今天,我们的目标是使用Django,Redis,和Socket.IO建立一个实时的聊天室.虽然几乎所有的Web应用程序都可以建立一个聊天室的.这篇文章将以较高的水平告诉你如何将基于REST的应用程序转换成一个实时的Web应用程序的.我会使用Django创建REST的部分,实际上自由地使用任何你舒服的语言/框架均可.接下来,让我们跳进代码,先列举我们所需要的部分. 组成: Django 1.4+ Redis 2.6.x (版本可选,但是建议使用) Redis-py 2.7.x (仅当你使用Redi

  • Node.js安装教程和NPM包管理器使用详解

    2009年的JSCOnf大会上,一个叫Ryan Dahl的年轻程序员向人们展示了一个他正在做的项目,一个基于Google V8引擎的JavaScript运行平台,它提供了一套事件循环和低IO的应用程序编程接口(API).和其他的服务端平台不同, JavaScript天生就是事件驱动IO,而这个项目又大大降低了编写事件驱动应用程序的复杂度,因此它很快就以不可思议的速度的成长流行起来,并应用到实际项目中.(Jack:这段翻译的不太靠谱,原文:This project was not like oth

  • 使用coffeescript编写node.js项目的方法汇总

    Node.js 基于JavaScript编写应用,JavaScript是我的主要开发语言.CoffeeScript是编译为JavaScript的编程语言.其实CoffeeScript语言因其可以一对一的翻译为JavaScript的特性,使用起来也非常灵活.将其引入项目的方式也有很多种,在此,我将使用coffeescript编写node.js项目的方法做一个汇总. 直接使用coffee指令运行纯coffeescript项目 一般提起coffeescript,自然而然地会想到他是javascript

  • 用C/C++来实现 Node.js 的模块(一)

    N久之前的一个坑--用 Node.js 来重构 NBUT 的 Online Judge,包括评测端也得重构一遍.(至于什么时候完成大家就不要关心了,(/‵Д′)/~ ╧╧ 总之我们现在要做的其实简而言之就是--用C/C++来实现 Node.js 的模块. 准备工作 工欲善其事,必先~~耍流氓~~利其器. node-gyp 首先你需要一个 node-gyp 模块. 在任意角落,执行: 复制代码 代码如下: $ npm install node-gyp -g 在进行一系列的 blahblah 之后,

  • node.js调用C++函数的方法示例

    目前nodejs调用c++主流的有两种方法,分别是addons和ffi addons是nodejs官方的c++扩展实现方案,但是由于需要使用模版,并且要对v8引擎有一定的了解,入门门槛较高. ffi是nodejs直接调用so库的一种实现,可以调用纯c的接口. 要想node.js调用C++的函数等,须先将C++代码编译成二进制的.node文件.node.js官方文档https://nodejs.org/dist/latest-v8.x/docs/api/addons.html中的C++ addon

随机推荐