使用neon 开发nodejs addon】的更多相关文章

备注:开发使用的是mac 系统,需要安装rust nodejs .python2.7 Xcode 1. 安装neon npm install -g neon-cli   2. 创建简单项目 neon new firstaddon (会有提示进行输入即可) 3. 项目结构 ├── README.md ├── lib │   └── index.js ├── native │   ├── Cargo.toml │   ├── build.rs │   └── src │   └── lib.rs └…
如果我们要在electron里使用我们开发的addon,那么直接使用是不行的. 官方的解释是:Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则需要手动设置 Electron 的 headers 的位置. 官方给出了几种解决办法,适用于不用场景: https://github.com/electron/electron/blob/master/docs-translations/zh-CN/tutorial/using-nati…
Mac版本客户端准备使用electron实现,需要对现有的C API的IM SDK 做NodeJS封装,提供Javascript接口. 使用Nan,遇到的问题主要是NodeJS是libuv defalut_loop 单线程的, SDK有自己的线程,C++层 V8的任何操作必须在主线程操作,不然就直接崩溃, 不像lua 加个锁不同线程都能进去.libuv 唯一线程安全的接口是uv_async_send, 也就只能用它解决问题了. SDK -> NodeJs 调用流程: 1. SDK 实例初试化时…
像asp.net Mvc一样开发nodejs+express Mvc站点 首先,我是个c#码农.从事Mvc开发已然4个年头了,这两年前端MVC的兴起,我也跟风学了一些,对前端的框架也了解一些,angularJs,requirejs,commonJs,backbone等等前端的mvc框架也异常流行,与这些前端的流行框架一同火起来的还有node.js. Node.js将javascript作为服务器端的代码开发,由其语言特性(单线程,异步)等以高效率高吞吐著称.这里不会去讨论node.js的好的坏的…
某个产品的Mac客户端计划基于electron实现,因为现有SDK有C API,原理上用NodeJS Addon来封装成JS API就可使用了.但涉及到与Addon多线程交互,翻找资料没能找到到底该怎么做,只好翻看NodeJS实现找到实现思路. 实现思路上,NodeJS V8 引擎是libuv单线程的,客户端前台页面逻辑跑在libuv事件循环中,后台SDK跑在独立的线程上.业务需要前后台线程之间互相通信,前台访问后台直接API调用,然后异步回调.后台通知则需要唤醒libuv线程来完成. libu…
使用 mongodb 的小系统 参考:https://my.oschina.net/chenhao901007/blog/312367 1. Robomongo 创建项目的数据库和数据表 参考:http://www.2cto.com/database/201604/498288.html 配置连接: Ok,连接成功齐活儿~ 一般不使用上述数据库,需新建自己的数据库, 鼠标移到 local 上---右键---Creat DataBase---输入 数据库名称 --- 单击 creat 即可,如下建…
前提: 已安装好 IDE ,eg:webstorm/IDEA 2016.3 & 2017.1 nodeJS(含 npm 及 相应的模板等) 要用 webstorm 开发 NodeJS项目(web/JS)项目,首先需要: 1. IDE 说明 webstorm 中自带了 nodeJS 开发环境的插件,可以跳过该步骤,直接下一步 若在 IDEA中,需下载 NodeJS 插件,参考http://blog.csdn.net/wang19891106/article/details/51127133,主要步…
关于node-gyp如何进行编译,我想它的官网已经说的很详细了: https://github.com/nodejs/node-gyp 但是我感觉关于binding.gyp文件的语法规则还是说的不明确,大概是因为它本身也不属于node-gyp的范畴吧 gyp文件的语法规则的官方文档应该是这个:https://code.google.com/p/gyp/wiki/GypLanguageSpecification 但是由于墙的原因,所以无法打开,国内我从网上找的比较好的文档是这个: http://w…
Nodejs c++ addon 是用c++去编写Nodejs的插件 技术栈: 1.node-gyp 一个用于把c++文件编译成node可执行文件的库 2.v8 google v8引擎 用于处理c++的数据类型和node的数据类型的转换 3.nan 相当于对v8做了一层封装,去处理v8不同版本兼容的问题 4.c++ 因为插件是用c++编写,所以掌握c++的知识…
常见的数据类型的转换基本比较容易,结合nan应该不是一件难事 参考链接: http://blog.jobbole.com/109598/ http://deadhorse.me/nodejs/2012/10/09/c_addon_in_nodejs_object.html 这里主要说一下Buffer类型的转换: Buffer是nodejs里面的类型,但是c++里面是没有的,那么怎么实现它们之间的转换呢? 1.c++ -> nodejs c++里面没有专门的buffer类型,但是有类似的char…