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


Posted in Javascript onJune 12, 2016

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++扩展)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
js利用prototype调用Array的slice方法示例
Jun 09 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 Javascript
AngularJS 限定$scope的范围实例详解
Jun 23 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
Vue 实现从文件中获取文本信息的方法详解
Oct 16 Javascript
jquery实现轮播图特效
Apr 12 jQuery
vue+AI智能机器人回复功能实现
Jul 16 Javascript
Webpack5正式发布,有哪些新特性
Oct 12 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 #Javascript
jQuery的each循环用法简单示例
Jun 12 #Javascript
基于jquery插件编写countdown计时器
Jun 12 #Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 #Javascript
浅谈jquery的map()和each()方法
Jun 12 #Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 #Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 #Javascript
You might like
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
2020/05/22 jQuery
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
Python isinstance判断对象类型
2008/09/06 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python Flask实现restful api service
2017/12/04 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
python多线程http压力测试脚本
2019/06/25 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
求职自荐信范文格式
2013/11/29 职场文书
会计系中文个人求职信
2013/12/24 职场文书
护理专业自我鉴定
2014/01/30 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
千与千寻观后感
2015/06/04 职场文书