Node Addon开发(第一部分):运行Github上的Node Addon例子

2 篇文章 0 订阅
1 篇文章 0 订阅

准备工作

如果熟悉node开发,只是想了解Addon的部分,可以直接略过Node安装部分。

搭建环境

Linux (我用的是Ubuntu 12.04), git, gcc/g++ 4.9以上版本 (由于新的V8版本头文件使用了c11语法,不支持c11语法的gcc编译新版本v8头文件会失败).

Node管理工具

Node管理工具有nvm, n和nvs,nvm应该是大家用得比较多的,最近也刚刚用了一下nvs,看自己的需要和习惯选择一个,在本次试验中需要切换不同的node版本。

安装Node/npm

安装完Node管理工具后,接下来可以安装不同版本node了,安装node会一并安装该node版本对应的npm包管理工具. 按照npmjs社区网站上的解释,npm可以指:
- npm网站
- Package Repository
- npm客户端工具:NodeJS的包管理工具,类似Java里的maven, Ruby里的Gem或者PHP的Pear.
不特别说明,文中提到npm都是指作为NodeJS包管理工具的npm. 关于npm的详细使用,可以参考

安装运行例子所需版本node,顺便安装了一个较新的node 7.2.0版本

nvs add 0.12
nvs add 0.10
nvs ls
 >node/7.2.0/x64
  node/0.12.17/x64
  node/0.10.48/x64
nvs use 0.12
  node/7.2.0/x64
 >node/0.12.17/x64
  node/0.10.48/x64

安装成功后,可以通过下面方法查看node和其中v8对应的版本:

$ node
> process.versions
{ http_parser: '2.7.0',
  node: '5.12.0',
  v8: '4.6.85.32',
  uv: '1.8.0',
  zlib: '1.2.8',
  ares: '1.10.1-DEV',
  icu: '56.1',
  modules: '47',
  openssl: '1.0.2h' }
> .exit

安装编写Node Addon的工具和库

node-gyp

node-gyp是从Google的GYP (Generate Your Project)改进来的,是node addon的跨平台编译工具,通过编写JSON格式的配置文件(binding.gyp),运行相应命令后生成目标平台上的native程序编译文件(Linux上的Makefile或者Windows上的vcxproj),完成编译后生成目标平台上的链接库xxx.node (相当于Linux上的.so或者Windows上的dll).

$ npm install node-gyp -g
nan

nan是Native Abstractions for Node.js的缩写,由于V8和Node版本演进,使用nan可以编写兼容不同版本的node的native程序,如果不考虑兼容性问题,就可以忽略nan.

$ npm install nan -g
or
$ npm install nan@latest -g
bindings

native程序编译后根据不同配置(debug版还是release版)会把链接库声称到不同的目录中,在JS中引用native模块时,就需要写明引用的是哪个路径上的库文件,有了bindings,就能简化这部分工作:
“Because the exact path to the compiled Addon binary can vary depending on how it is compiled (i.e. sometimes it may be in ./build/Debug/), Addons can use the bindings package to load the compiled module.”
npm install bindings -g

$ npm install bindings -g

运行例子

Node addon example

Node addon example

总共8个例子,每个例子包括三种不同的版本
* Node 0.10: Mostly compatible with Node 0.8 and even 0.6, older style V8 programming
* Node 0.12: Newer style V8 programming, compatible with Node 0.11+
* NAN: The example rewritten using NAN for compatibility with Node 0.8 -> 0.11+

切换当前node到对应例子需要的版本,在每个例子的目录中执行:

$ npm install
$ node-gyp rebuild
$ node ./

NAN example

Nan example
这个例子利用NAN编写了一个用蒙特卡洛方法计算π的程序,在例子目录中运行后会得到类似下面的结果:

$ node-gyp rebuild
$ node ./addon.js
Sync method:
        π ≈ 3.14157864 (0.000014013589793027137 away from actual)
        Took 2050ms

Async method:
        π ≈ 3.14190464 (0.0003119864102067993 away from actual)
        Took 549ms

下一部分中将分析上面例子中的程序细节,并尝试打造一个自己的addon.


http://javascript.ruanyifeng.com/nodejs/npm.html
https://www.npmjs.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值