美文网首页
Node-插件开发

Node-插件开发

作者: 林海_Mense | 来源:发表于2019-04-16 14:32 被阅读0次

    目标

    终极目标是让大家对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-插件开发

          本文链接:https://www.haomeiwen.com/subject/njgywqtx.html