首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

node-gyp是用Node.js编写跨平台命令行工具,用于为Node.js编译本机插件

node-gyp - Node.js 本地插件构建工具 node-gyp是用Node.js编写跨平台命令行工具,用于为Node.js编译本机插件。...它包含gyp-next项目的供应商副本,该副本以前由Chromium团队使用,已扩展用来支持Node.js本机插件开发。 请注意,node-gyp并不用于构建Node.js本身。...支持Node.js多个目标版本(0.8,...,4、5、6等),无需顾及系统安装版本node-gyp会下载目标版本所需开发文件或头文件)。...特性 各个受支持平台都使用相同构建命令运行 支持不同Node.js目标版本 安装 你可以使用npm安装node-gyp: npm install -g node-gyp 根据你操作系统,你需要安装...如何使用 要编译本地插件,首先转到它根目录: cd my_node_addon 下一步是为当前平台生成合适项目构建文件。

1.4K10

Node.js 原生模块开发方式变迁

在早期时候,Node.js 原生 C++ 模块开发方式是非常暴力,直接使用其提供原生模块开发头文件。 开发者直接深入到 Node.js 各种 API,以及 Google V8 API。...这使得在不同 Node.js 下,只要 ABI 版本号一致,编译好 C++ 扩展就可以直接使用,而不需要重新编译。...事实上,在支持 N-API 接口 Node.js 中,的确就指定了当前 Node.js使用 ABI 版本。...注意:哪怕是现在 Node.js v8.x 版本,N-API 仍处于一个实验状态,个人认为还有非常长一段路要走,所以大家在生产环境中还不必太过于激进,不过 N-API 依然是大势所趋;不过对于使用版本...Node.js 开发者来说,大家也不要着急,即使 N-API 是在 v8.x 才正式集成进 Node.js,在其它旧版本 Node.js 中依然可以将 N-API 作为外挂式头文件9中使用,只不过无法做到跨版本特性

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

编写原生 Node.js 模块

尽管Node.js得益于libuv,在异步I/O操作很有优势,但遇到数字计算时并不是一个很好选择。 使用更加底层API,比如操作系统层面的。...—— 来自Node.js官方文档 这意味着如果处理得当的话,模块调用者使用由C/C++编写原生模块方式和由Node.js编写模块一样。...npm install时候会调用它来进行编译和安装工作。因此,开发者想要调用node-gyp必须自己安装一个全局node-gyp版本。...运行node-gyp build命令会生成可被Node.js调动addon.node二进制文件。 Node.js中调用原生模块 const frogJump = require('....它基于Node.js API接口,兼容所有Node版本,目前最佳实践是基于nan来扩展原生模块,而不是直接使用Node.js API

3.6K00

如何写一个简单node.js c++扩展

如何写一个简单node.js c++扩展 node 是由 c++ 编写,核心 node 模块也都是由 c++ 代码来实现,所以同样 node 也开放了让使用者编写 c++ 扩展来实现一些操作窗口...这样操作时很不易于传播,大家不会使用 sass 就需要安装一个 sass 版本 node 吧。 就像为了看星战还要专门下载一个优酷- -。...(addon, Init) 在 c++ 代码完成以后就是需要用到 node-gyp 时候了,建议全局安装 node-gyp,避免一个项目中出现多个 node_modules 目录时候使用 npx 会出现一些不可预料问题...后记 上边一些内容就是如何使用 node-addon-api 来快速开发一个 c++ 扩展,以及如何使用 node-gyp 进行编译,还有最后的如何使用 JS 调用 c++ 扩展。...不要让编程语言限制了你想象力 参考资料 node-gyp node-addon-api | Addon node-addon-api | CallbackInfo node-addon-api |

2K30

如何开发 Node.js Native Add-on?

目前 N-API C++ 封装 node-addon-api 每周下载量已经超过了 250万次,并且所有 Node.js LTS(长期支持版本)都已经支持了 N-API v3 或者更高版本Node.js...新特性 越来越多开发者们开始使用 N-API 与 node-addon-api 开发 Node.js add-on,我们也不断地为 N-API 和 node-addon-api 添加新关键特性和改进...曾经 Node.js add-on 只能使用 node-gyp 来构建。...而代表了 N-API 这些 C API 现在已经是每一个 Node.js 发布版本一部分,并且我们也有了可以通过 npm 安装 node-addon-api 来提供这些 C API C++ 封装...N-API 是单纯 C API,这意味着我们可以使用 C/C++ 之外语言、运行时开发 Node.js add-on,比如 Go 或者是 Rust。

1.5K20

Node.js为什么需要C++扩展?

二.实现方式 在 Node.js 中,编写一个 C++扩展有 3 种方式: 直接手搓:基于 Node、V8、libuv 提供 C++ API 直接写,但要手动处理这些 API 在不同 Node 版本兼容性问题...(尤其是 V8 API 经常发生变化) 基于nan:即 Native Abstractions for Node.js,为了屏蔽不同 Node/V8 版本C++ API 差异而加一层抽象,期望将下层...上例直接使用了 Node、V8 提供 C++ API,可能存在跨版本兼容性问题(过几个版本可能就编译报错了),并且在不同版本 Node 环境下都需要重新编译,否则会产生运行时报错: $ node -...P.S.更复杂用法,以及关于 N-API 更多信息,见N-API P.S.另外,N-API 提供都是 C 接口,对于 C++环境,可采用node-addon-api 五.应用场景 有些场景下,用...C++扩展来实现尤为合适: 计算密集型模块,C++执行性能一般要高于 JS 将现有的 C++类库低成本地封装成 Node.js 扩展,供 Node 生态使用 Node.js 提供原生能力无法满足需要

2.3K10

拥抱Node.js 8.0,N-API入门极简例子

N-API简介 Node.js 8.0 在2017年6月份发布,升级特性中,包含了N-API。编写过或者使用过 node扩展同学,不少都遇到过升级node版本,node扩展编译失败情况。...因为node扩展严重依赖于V8暴露API,而node不同版本依赖V8版本可能不同,一旦升级node版本,原先运行正常node扩展就编译失败了。...如何使用N-API 先强调一点,N-API并不是对原有node扩展实现方式替代,它只是提供了一系列底层无关API,来帮助开发者编写跨版本node扩展。...至于如何编写、编译、使用扩展,跟原来差不多。 本文会从一个超级简单例子,简单介绍N-API使用,包括环境准备、编写扩展、编译、运行几个步骤。...备注:当前N-API还处于试验阶段,官方文档提供例子都是有问题,如用于生产环境需格外谨慎。 1、环境准备 首先,N-API是8.0版本引入,首先确保本地安装了8.0版本

2.2K70

拥抱Node.js 8.0,N-API入门极简例子

本文作者:IMWeb 陈映平 原文出处:IMWeb社区 未经同意,禁止转载 N-API简介 Node.js 8.0 在2017年6月份发布,升级特性中,包含了N-API。...编写过或者使用过 node扩展同学,不少都遇到过升级node版本,node扩展编译失败情况。...因为node扩展严重依赖于V8暴露API,而node不同版本依赖V8版本可能不同,一旦升级node版本,原先运行正常node扩展就编译失败了。...如何使用N-API 先强调一点,N-API并不是对原有node扩展实现方式替代,它只是提供了一系列底层无关API,来帮助开发者编写跨版本node扩展。...至于如何编写、编译、使用扩展,跟原来差不多。 本文会从一个超级简单例子,简单介绍N-API使用,包括环境准备、编写扩展、编译、运行几个步骤。

1.4K20

node-pre-gyp 应用场景介绍及使用方法

Node.js 提供了使用 C++ addon 方案作为扩展能力。我们可以编写 C++ 代码来扩展 Node.js 或封装自己产品相关能力接口为 Node.js 接口提供用户或者开发者使用。...但使用前提是引入方必须要具备编译 C++ 代码环境,比如在 Windows 下需要安装 MSVC 编译工具链。而正常前端开发者并不会将这些组件安装到系统里面,他们更关注是前端业务逻辑。...它包含了打包上传、根据版本自动下载等一系列流程。这些步骤只需要你对工程做一些简单配置就可以实现。...node-sqlite3 就是通过该插件来实现下载预编译二进制包:https://github.com/mapbox/node-sqlite3 针对一些不依赖三方 SDK C++ 插件来说,只需导出一份...这样在三方应用引入我们包时会调用 node-pre-gyp install 首先到 package.json 中指定 host 去尝试下载已经编译好二进制包,如果没有下载到则调用本地 node-gyp

56340

通过ffi在node.js中调用动态链接库(.so.dll文件)

)已经有了非常成熟C/C++编写API,以供应用程序调用,node.js作为在公司内新兴后台runtime在调用这些公共服务时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...对于一些密集计算型任务可以由C++编写好模块,生成.so文件后由node.js调用。 ffi简介与安装 我们使用node-ffi来帮助我们调用动态链接库。...安装ffi: 全局或局部安装node-gyp: npm install -g node-gyp,装之前要安装python 2.7,而node-gyp不支持Python 3.x,所以安装了多个版本Python...并且,如果你使用node.js版本是4.0+,node-gyp安装依赖支持C++11语法gcc,你需要确定当前环境gcc版本至少高于4.8。...本文只阐述.so文件调用方法,调用.dll差别不大。 在Linux下如果使用C++编写addon来调用.so文件,需要将.so文件为系统共享。

5.8K10

通过ffi在Node.js中调用动态链接库(.so.dll文件)

/C++编写API,以供应用程序调用,node.js作为在公司内新兴后台runtime在调用这些公共服务时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...对于一些密集计算型任务可以由C++编写好模块,生成.so文件后由node.js调用。 ffi简介与安装 我们使用node-ffi来帮助我们调用动态链接库。...安装ffi: 全局或局部安装node-gyp: npm install -g node-gyp,装之前要安装python 2.7,而node-gyp不支持Python 3.x,所以安装了多个版本Python...并且,如果你使用node.js版本是4.0+,node-gyp安装依赖支持C++11语法gcc,你需要确定当前环境gcc版本至少高于4.8。...本文只阐述.so文件调用方法,调用.dll差别不大。 在Linux下如果使用C++编写addon来调用.so文件,需要将.so文件为系统共享。

6K02

opencv cmake编译 && nodejs

,nodejs opencv使用了bin和lib目录,node-gyp编译js源码中可以看到相应环境变量和目录结构检测代码。...如果出现STDDEF.H找不到,说明VC环境变量未添加,需要运行VC环境下vcvarsall.bat,在使用NPM安装 如果node-gyp目录中build.js错误,需要配置环境变量GYP_MSVS_VERSION...= 2010 或者当前vs版本 如果以上配置还不行,单独测试node-gyp configure build C ++ demo,如下地址: http://www.cnblogs.com/yupeng...node-gyp configure显示编译C ++配置node- gyp 最终生成* .node 二进制文件,供nodejs调用 npm init为项目创建package.json(项目依赖配置)...在C盘全局节点配置中node-gyp中查到,node- gyp 使用3.6.1版本v8.h和node.h使用VS2015或者更高版本,而我用VS2010,只支持C ++ 11标准,对于C

2.5K20

通过ffi在node.js中调用动态链接库(.so.dll文件)

概述 为什么要在node.js中调用动态链接库 由于腾讯体系下许多公共后台服务(L5, CKV, msgQ等)已经有了非常成熟C/C++编写API,以供应用程序调用,node.js作为在公司内新兴后台...runtime在调用这些公共服务时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...对于一些密集计算型任务可以由C++编写好模块,生成.so文件后由node.js调用。 ffi简介与安装 我们使用node-ffi来帮助我们调用动态链接库。...并且,如果你使用node.js版本是4.0+,node-gyp安装依赖支持C++11语法gcc,你需要确定当前环境gcc版本至少高于4.8。...本文只阐述.so文件调用方法,调用.dll差别不大。 在Linux下如果使用C++编写addon来调用.so文件,需要将.so文件为系统共享。

5.9K70

Node.js 15 正式版发布

它是为了将Addons插件和底层JavaScript引擎改动隔离开来,并且允许在一个版本编译模块不需要重新编译就可以在更高版本Node.js上运行。...N-API是一个C语言API,它确保了Node.js版本和不同编译器级别之间应用程序接口(ABI)稳定性。C++ API可以更容易使用。...为了支持使用C++Node.js使用了一个C++包装器模块叫做node-addon-api,此包装器提供了一个可内联C++ API。...使用node-addon-api构建二进制文件将依赖于Node.js导出基于C函数符号N-API接口,node-addon-api是一种更有效写代码方法,用来编写调用N-API。...关于 Node.js N-API,可以参考:C/C++ addons with N-API 下面是node-addon-api一个使用例子。

1.7K30

简单上手nodejs调用c++(c++和js混合编程)

因为项目的原因,最近经常使用node.js搭RESTful接口。 性能还是很不错啦,感觉比Spring Boot之类要快。...而且在不错性能之外,只要程序结构组织好,别让太多回调把程序结构搞乱,整体开发效率比Java快就太多了。 如果想进一步提高效率,使用c++来优化部分模块是不错选择。...include_dirs是编译时使用头文件引入路径,这里使用node -p执行node-addon-api模块中预置变量。 dependencies是必须,不要改变。...(addon, Init) 程序中引入napi.h头文件,使用Napinamespace还有最后NODE_API_MODULE(addon,Init)都是模板化,照抄过来不用动。...(addon, Init) 为了工作方便,源码中增加了一个没有引出openssl_md5函数,仅供程序内部使用

4.8K40
领券