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

NodeJS,N-API,nan,node-gyp和cmake-js之间的区别

NodeJS是一个基于Chrome V8引擎的JavaScript运行时环境,用于构建高性能的网络应用程序。它采用事件驱动、非阻塞I/O模型,使得在单线程下能够处理大量并发请求。

N-API(Node.js API)是NodeJS提供的一套稳定的C/C++编程接口,用于编写NodeJS的扩展模块。N-API的目标是提供一个跨版本和跨平台的API,使得开发者能够更轻松地编写和维护NodeJS扩展模块。

nan(Native Abstractions for Node.js)是一个用于简化NodeJS扩展模块开发的库。它提供了一组C++模板和宏,使得开发者能够以一种更简洁、更易于理解的方式编写NodeJS扩展模块。

node-gyp是一个用于编译和构建NodeJS扩展模块的工具。它使用了GYP(Generate Your Projects)构建系统,可以将C++代码编译成可加载的NodeJS模块。

cmake-js是一个用于简化NodeJS扩展模块构建过程的工具。它使用CMake构建系统,提供了一组简单的命令和配置选项,使得开发者能够更方便地构建和发布NodeJS扩展模块。

区别:

  • NodeJS是一个JavaScript运行时环境,而N-API、nan、node-gyp和cmake-js是用于编写NodeJS扩展模块的工具和库。
  • N-API是NodeJS提供的一套稳定的C/C++编程接口,用于编写跨版本和跨平台的NodeJS扩展模块。
  • nan是一个用于简化NodeJS扩展模块开发的库,提供了一组C++模板和宏。
  • node-gyp是一个用于编译和构建NodeJS扩展模块的工具,使用了GYP构建系统。
  • cmake-js是一个用于简化NodeJS扩展模块构建过程的工具,使用CMake构建系统。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云函数(SCF):https://cloud.tencent.com/product/scf
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

这是一个 Windows 下 node-gyp 下载的指定版本 Node.js 头文件和库文件的目录结构。...; $ node-gyp install:手动下载当前版本的 Node.js 的头文件和库文件到对应目录。...并且在 Node.js 与 io.js 黑历史的年代,这个在 GitHub 上面项目移到了 io.js 的组织下面;后来由于两家又重归于好,NAN 最终归属到了 nodejs 这个组织下面。...即使是 NAN 这样的好物,也有自己的一个使命,使命之外的东西会被逐渐剥离。比如 0.10.x 和 0.12.x 等版本就应该要退出历史舞台了,NAN 会逐渐放弃对它们的兼容和支持。...这对于以前的暴力做法和 NAN 做法来说,无疑是非常大的一个进步。 向下兼容 至此,我希望大家还没有忘记 N-API 是自 Node.js 8.0 之后出的特性。

1.3K30
  • medooze源码分析--NodeJS调用CC++

    在这一点上,对我们来说,最有趣的是将NodeJS是如何工作的以及它涉及那些部分讲清楚。 重要的是要知道为什么我们可以在NodeJS中使用两种语言(JavaScript和C ++)。...我们需要定义的主要内容是指定要编译的文件以及我们如何调用最终的二进制文件。 它具有类似JSON的结构,获得此配置的关键是源和目标。 NODE-GYP 它是允许我们编译 Native 扩展的工具。...N-API 它是C API,允许我们以完全抽象的方式与我们的引擎交互。 对我来说,这是尝试将Node 移植到不同架构的演变的结果。 N-API提供不同Node版本之间的稳定性和兼容性。...我们只是运行我们的Native扩展。 我们在N-API之前做了什么? 我发现了解Native扩展的上下文和历史很重要,因为它可以访问大量文档和示例。 这个想法是让N-API最终取代NAN。...在新的NodeJS版本中,可能存在可能破坏我们的Native扩展的V8更改。 使用N-API是一种避免此问题的方法。

    1.3K10

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

    (尤其是 V8 API 经常发生变化) 基于nan:即 Native Abstractions for Node.js,为了屏蔽不同 Node/V8 版本间 C++ API 差异而加的一层抽象,期望将下层...跨 Node 版本(无需重编)直接运行无疑是决定性的优势,但只有专门提供的 N-API 才保证 ABI 稳定。...,见Node.js 架构剖析 三.Hello World 清晰起见,这里采用最原始的方式,手搓一个最简单的 C++扩展: // hoho.cc // 见 https://github.com/nodejs...,也可以npm install node-gyp将其安装到当前项目,并通过npx node-gyp调用 接着通过node-gyp configure命令,生成当前平台构建过程所需的配置文件(Unix 系统下生成...P.S.更复杂的用法,以及关于 N-API 的更多信息,见N-API P.S.另外,N-API 提供的都是 C 接口,对于 C++环境,可采用node-addon-api 五.应用场景 有些场景下,用

    2.4K10

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

    新特性 越来越多的开发者们开始使用 N-API 与 node-addon-api 开发 Node.js add-on,我们也不断地为 N-API 和 node-addon-api 添加新的关键特性和改进...每一个样例目录会包含 3 个子目录,分别代表了传统的 NAN,N-API,和 node-addon-api 开发 add-on 的例子。...这个网站包含了开发、构建 Node.js add-on 的从入门到深入的许多信息于资料,比如 上手所需的工具; 从 NAN 向 N-API 的迁移导引; 不同构建系统的对比(node-gyp,CMake...N-API 在诞生之初,就是以在不同 Node.js 版本之间,甚至是 Major 版本之间保证 ABI 与 API 兼容性为目标,而这也已经可以证明能够提供更多额外的好处: 我们不再需要在切换 Node.js...,可以查阅 https://github.com/nodejs/abi-stable-node#meeting 来加入我们每周的工作组会议。

    1.6K20

    理解nodejs插件的加载原理并使用n-api编写你的第一个nodejs插件

    剩下的就是阅读n-api的api文档就可以。接着我们新建一个binding.gyp文件。gyp文件是node-gyp的配置文件。node-gyp可以帮助我们针对不同平台生产不同的编译配置文件。.../test.cc" ] } ] } 语法和makefile有点像,就是定义我们编译后的目前文件名,依赖哪些源文件。然后我们安装node-gyp。...npm install node-gyp -g nodejs源码中也有一个node-gyp,他是帮助npm安装拓展模块时,就地编译用的。...我们安装的node-gyp是帮助我们生成配置文件并编译用的,具体可以参考nodejs文档。一切准备就绪。我们开始编译。直接执行 node-gyp rebuild 在路径....我们已经学会了如何编写一个nodejs的拓展模块。剩下的就是阅读n-api文档,根据自己的需求编写不同的模块。 写完了一个拓展模块,当然要去分析他的机制。一切的源头在于require函数。

    2.7K20

    用 Rust 和 N-API 开发高性能 NodeJS 扩展

    N-API 弥补了之前 nan 最痛的跨 V8 版本 ABI 不兼容的问题。 但即使是迁移到了 N-API,编写 native addon 也有一些编写代码之外的痛点。...分发源码 需要使用的用户自行安装 node-gyp,cmake g++ 等构建工具,在开发阶段这些都不是什么问题,但随着 Docker 的普及,在特定的 Docker 环境中安装一堆编译工具链实在是很多团队的噩梦...除此之外,还要编写/调试大量的 CI/CD 配置,这些都十分费时费力。 生态和工具链 目前大部分的 NodeJS addon 基本都使用 C/C++ 开发。...在正式决定开始使用 Rust + N-API 开发 NodeJS addon 之前,还有一些问题需要讨论: N-API 的 Rust binding NodeJS 官方为 N-API 提供了相应的头文件...下面我们来用一个简单而实际的例子介绍一下如何使用 Rust 和 napi-rs 开发、测试、发布一个 NodeJS native addon。

    1.9K20

    HTTP和HTTPS 之间的区别

    PS: https就是http和TCP之间有一层SSL层,这一层的实际作用是防止钓鱼和加密。防止钓鱼通过网站的证书,网站必须有CA证书,证书类似于一个解密的签名。...另外是加密,加密需要一个密钥交换算法,双方通过交换后的密钥加解密。 http与https有什么区别呢?本文详解http和https的区别。...所以http和https之间的区别就在于其传输的内容是否加密和是否是开发性的内容。这也是你为什么常常看见https开头的网址都是一些类似银行网站的这类网址的原因。...HTTPS和HTTP的区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。...b) 服务端和客户端之间的所有通讯,都是加密的. i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥,一般意义上的握手过程。 ii.

    1.4K40

    【nodejs系列】使用v8编写c++插件

    虽然现在大部分情况都是使用n-api来编写插件,但是底层毕竟是v8(和libuv),使用v8编写简单的插件,同时熟悉v8的使用。...本文介绍在写c++插件时,简单又常用的写法,其实本质上,写插件的难处在于底层的能力和对libuv、v8的了解。话不多说,直接看代码。...func->InstanceTemplate()->Set(isolate, "add", FunctionTemplate::New(isolate, Add)); // 设置函数对象本身的属性.../test.cc" ] } ] } 看起来非常简单,大概的流程如下 1 npm install -g node-gyp 2 node-gyp configure 3 node-gyp build...4 node test.js 拓展nodejs的方式很多,插件是一种,直接修改内核也是一种,之前有介绍过如何修改内核,有兴趣的同学也可以看一下。

    68510

    Node.js 8有哪些重要功能和修复?

    下载Node.js 8版本:https://nodejs.org/dist/v8.0.0/ Async Hooks API 介绍 Async Hooks (以前称为AsyncWrap) API允许获取有关句柄对象生命周期的结构跟踪信息...这些函数将会根据处理程序对象的生命周期事件选择性触发。 N-API 介绍 N-API是用于构建原生插件的API。它独立于底层JavaScript运行时,并作为Node.js自身的一部分进行维护。...这么做的目的是保证应用程序二进制接口(ABI)在不同Node.js版本之间能够保持稳定。...N-API的目的是将附加组件和基础JavaScript引擎中的更改区分开,以便原生插件在不需要重新编译情况下,就可以运行不同的Node.js版本。 了解更多N-API信息。...node-gyp现在支持Windows的node-gyp.cmd 新的发布版本将会包括sha512和sha1校验 Node.js 8 版本中的其它显著改变 Buffer Buffer方法现在接受Uint8Array

    1.1K20

    Statement 和 PreparedStatement之间的关系和区别

    大家好,又见面了,我是你们的朋友全栈君。 Statement 和 PreparedStatement之间的关系和区别....关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高 详解:...接口:public interface PreparedStatement extends Statement之间的继承关系 SQL 语句被预编译并存储在 PreparedStatement 对象中...注:用于设置 IN 参数值的设置方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。...例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法,问号的位置也是应该注意的,因为第一个问好的位置为1,第二个问号的位置为2.以此类推。

    1.7K20

    IM跨平台技术学习(四):蘑菇街基于Electron开发IM客户端的技术实践

    node-gyp 会根据 binding.gyp 配置文件调用各平台上的编译工具集来进行编译。...如果要实现跨平台,需要按不同平台编译 nodejs addon,在 binding.gyp 中按平台配置加解密的静态链接库。...对 c++ 代码进程封装 addon 的时候,可以使用 node-addon-api。 node-addon-api 包对 N-API 做了封装,并抹平了 nodejs 版本间的兼容问题。...封装大大降低了非职业 c++ 开发编写 node addon 的成本(关于 node-addon-api、N-API、NAN 等概念可以参考死月同学的文章《从暴力到 NAN 再到 NAPI——Node.js...图片 PS:关于TCP和UDP的区别,以及该如何选择,可以详细阅读这几篇: 《快速理解TCP和UDP的差异》 《一泡尿的时间,快速搞懂TCP和UDP的区别》 《简述传输层协议TCP和UDP的区别》 《为什么

    1.9K30

    理解 CI 和 CD 之间的区别

    大家好,我是 ConardLi,今天我们来看一个研发中非常常见的概念,CI/CD,你有了解过它们的区别吗?(本文由 wangjie 翻译) 有很多关于持续集成(CI)和持续交付(CD)的资料。...持续集成和持续交付都是开发方法。它们没有链接到特定的工具或者供应商。...所以,我们不会陷入使用工具和技术术语来解释 CI / CD 的陷阱,我们将用最重要的东西来解释:人!...开发应用的传统方法如下: Alice, Bob, 和 Charlie 在它们各自的工作区,工作在3个不同的 feature。每个开发人员都以各自的方法编写和测试代码。...在发布时还没有准备就绪的功能,或者根本就不会交付给客户,或者他们进一步推迟发布日期。 发布导致开发人员(想要发布新功能)和运营(想要稳定,不想一次部署太多的新功能)之间的关系变得紧张。

    1.5K10

    PAAS、IAAS和SAAS之间的区别

    你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS、PaaS和SaaS,这几个术语并不好理解。不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!...其所能提供的云服务也就是云计算的三个分层:PAAS、IAAS和SAAS,就像披萨店提供三种服务:买成品回家做、外卖和到披萨店吃。...一些大的IAAS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.不过这些公司又都有自己的专长,比如Amazon和微软给你提供的不只是IAAS,他们还会将其计算能力出租给你来...PAAS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。...尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分。

    2.1K20
    领券