Node-插件开发

目标

终极目标是让大家对node(主要如何开发c++插件)有一个快速完整的认识

示例

需要安装编译c++文件为node可以使用的.node文件。 node-gyp
python安装 mac自带
官网demo。

nodejs源码简单分析

benchmark : 一些nodejs 性能測试 代码

build:编译nodejs 生成文件夹

deps:nodejs依赖 的工具包。包含 v8、http_parser、opensslzlib、zlib、uv

doc:文档

lib:包括JavaScript源代码

src:包括C++源代码

test:測试代码

tools:编译时用到的工具

这里我们仅仅需关注 src 和lib 目录

开发node插件流程

新建c++ 文件.cc .h文件
node-gyp打包.cc源文件
js引用,调用

node基础(关于开发插件的)

基本概念

node.js实际上就是一个用c++完成的程序,他之所以能够实现javascript,是因为他的底层主要的两部分第三方库,chrome V8和 libuv。
chrome v8是javascript运行时,用来解析执行javascript代码
libuv就是实现我们常说的事件轮询

chrome v8

用c++完成的库,其实就是把我们存的变量(let a = 1),在c++中会生成一个相同的存储单元,(类似于堆栈的深复制),这时候底层用c++操作这个javascript生成的堆栈从而改变javascript的变量值。

句柄:
image.png

image.png

注:唯一标识的意思,和指针有点像, 失去了句柄的对象被垃圾回收机制回收, 对应的,有有效句柄链接的对象不会被回收。(外观模式,接口定义)

libuv

基础概念
事件循环,异步IO,不阻塞
基本单位,句柄(可以理解为事件类型,如click,scroll,resize,各种类型的句柄)等。

打包

node-gyp

node-N-API

c++内容不怎么变,但是node的版本经常变化。
解决不同版本node对应的插件兼容问题。

扩展知识

npm和cnpm
扁平化安装

你可能感兴趣的:(Node-插件开发)