因 N-API 发音对黑人的头发不友好,Node.js 官方将其改名为 Node-API

开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一) NAPI其实是最早应该是来自node.js中的一个拓展库(也可以说是一整套API接口),叫Node-API,叫做N-API。是用来构建本地插件的API,将所有的nodejs底层数据结构黑盒化,封装成二进制接口,这样就可以实现不同版本的Node.js使用同样的接口,其目的是为了简化开发和维护。这是一条使用框架编写一些C/C++代码作为JS的接口的时需要注意的事情。黄同学在做一个板子的sample的时候发现,某个smaple的样例源码无法跑通,除了一些简单的语法错误,最主要的是函数定义时的参数类型。 阅读详情

N-API 是用来给 Node.js 构建本机插件的 API,它由 Node.js 官方维护。此 API 将是 Node.js 的应用程序二进制接口(Application Binary Interface,ABI)稳定版。它旨在将插件与底层 JavaScript 引擎中的更改隔离开来,这样低版本已经编译好的模块可以直接在高版本的 Node.js 上运行而无需重新编译。

但是 Node.js 成员 James M Snell 指出:N-API 的发音是 “En-Ay-Pee-Eye”,这个发音和 “nappy” 比较接近。nappy 的意思是“尿片、尿布”。

你以为他是因为这个名字不好听才建议改名的吗?不。他随后又指出:“nappy” 经常被用来形容黑人的头发,而且含贬义。而且 N-API 不能明确的表示这个 API 的含义。所以他建议改名。

我们都知道,最近美国的舆论是“黑命贵”,而没想到现在已经发展到了“黑发贵”了。

这个 API 是用来开发本机插件的,也就是 Native Addons,所以叫 N-API。如果不用这个名字,那么用什么呢?于是 James M Snell 建议使用 “Stable ABI”,也就是“稳定的 ABI”,简写为 S-ABI。

看到这儿我就不淡定了!如果因为 N-API 发音是对黑人的头发不友好,那这个发音简直是对十几亿中国人不友好。S-ABI,发音 “SABI”,音同……算了,我不写了,这种词汇我都不好意思写出来。

最终 N-API 被改名为了 Node-API。

当我去 GitHub 去看相关的 issue 和 pr 时,发现另一个不解的事情。Node 仓库的默认分支还是 master,而不是 main:
在这里插入图片描述
众所周知,受美国大规模的 “Black Lives Matter” 运动影响,为了安抚愈演愈烈的民众情绪,GitHub 把默认分支从 master 修改为了 main。因为 master/slave 会让人联想起主从,进而联想到奴隶制,进而联想到黑奴。很多软件的 blacklist/whitelist(黑名单/白名单)也修改为了 dennylist/allowlist(禁止名单/允许名单)。

Node.js 这么担心 N-API 发音涉嫌不尊重黑人头发,那又为什么不把 master 修改为 main 呢?

这个 issue 是 2021 年 1 月 1 日提的:https://github.com/nodejs/abi-stable-node/issues/420 美国文字狱进入了新阶段。

N-API (Node-API) 是一种平台无关的 C API,它允许编写高性能的 C/C++扩展模块来与 Node.js 运行时交互 N-API (Node-API) 是一种平台无关的 C API,它允许编写高性能的 C/C++扩展模块来与 Node.js 运行时交互,而无需了解 V8(JavaScript 引擎)的内部细节。然而,由于每个项目的具体情况不同,最好的做法通常是查阅项目的文档或查找具体的错误日志,以找到最合适的解决方案,因为直接复制粘贴一般不会解决根本原因。当你创建一个新的N-API模块,你需要指定要使用的N-API版本。文件中的N-API版本设置,你需要打开该文件(通常位于项目根目录下),找到与N-API相关的部分。 阅读详情

相关推荐

通过N-API使用C/C++开发Node.js Native模块

本文主要简单介绍Node.js中的N-API模块,并以一个简单的例子展示如何通过N-API使用C/C++开发Node.js Native模块。

Ghosind 5020

N-API

N-API N-API(N是一个字母,然后是API)是用于构建本机插件的API。它独立于底层JavaScript运行时(例如V8)。并作为Node.js本身的一部分。此API将作为跨Node.js版本已编译的应用程序接口(Application Binary Interface)的稳定版,简称(ABI)。它是为了将Addons插件和底层JavaScript引擎的改动隔离开来,并且允许在一个版本编译...

u014742463的博客 1546

HarmonyOS Next开发学习手册——Node-API接口进行模块加载

Node-API中的napi_load_module_with_info接口的功能是进行模块的加载,当模块加载出来之后,可以使用函数napi_get_property获取模块导出的变量,也可以使用napi_get_named_property获取模块导出的函数,该函数可以在 新创建的ArkTs基础运行时环境 中使用。

maniuT的博客 655

Node.js 扩展N-API 和应用场景

N-API,这是最开始时的名字,现在也叫 Node-API,是专门用于构建 native nodejs 扩展模块的一组 api,在 nodejs 8.0.0 版本的时候引进的,并内置于 nodejs 内部,由官方自己维护。

csssbad的博客 1947

阐述 Node.js 中的 N-API 如何实现与 C/C++ 模块的高效交互,以及其优势和局限性。

N-API 是 Node.js 中一个强大的工具,可以让你充分利用 C/C++ 的性能优势,同时保持 Node.js 的稳定性和易用性。简单来说,N-API 就像一个“翻译机”,它把 JavaScript 的数据类型翻译成 C/C++ 能理解的类型,再把 C/C++ 的数据类型翻译成 JavaScript 能理解的类型。和 V8 API,每次 Node.js 版本升级,V8 引擎的 API 可能会发生变化,你的 C++ 模块就得跟着重新编译,否则就会出现“水土不服”的情况。不是一个字符串),就会调用。

weixin_41455464的博客 730

深入理解 Node.js 中 N-API (Native Addons API) 的设计目的,以及它如何实现 Node.js 与 C/C++ 模块的 ABI 兼容性。

这样,V8 升级,只要 N-API 保持不变,Native Addons 就能继续工作。记住,N-API 就像一个靠谱的翻译官,让 Node.js 和 C/C++ 能够愉快地合作。掌握 N-API,就等于掌握了打开 Node.js 高级应用的一把钥匙。今天咱们来聊聊 Node.js 里的 N-API,这玩意儿听起来高大上,其实就是个“翻译官”,负责让 Node.js 和 C/C++ 这俩“老外”能顺畅交流。所以,Node.js 需要一个桥梁,连接 JavaScript 的世界和 C/C++ 的世界。

weixin_41455464的博客 825

harmony 鸿蒙安全和高效的使用N-API开发Native模块

N-API 是 Node.js Addon Programming Interface 的缩写,是 Node.js 提供的一组 C++ API,封装了V8 引擎的能力,用于编写 Node.js 的 Native 扩展模块。通过 N-API,开发者可以使用 C++ 编写高性能的 Node.js 模块,同时保持与 Node.js 的兼容性。

maniuT的博客 1861

napi-asyncworker-example:一个示例项目,显示如何使用Node.js N-API AsyncWorker类

N-API AsyncWorker示例 这是一个示例项目,显示了如何使用Node.js N-API AsyncWorker类 可以在找到描述该项目的教程。 要在系统上生成并运行该程序,请将其克隆到计算机上,然后在克隆中运行以下两个命令: npm install npm test 您需要安装Node 10.5.0或更高版本。

零基础开发 Node.js Addons 插件:Hello Node-API

Node-API(以前称为 N-API)是 Node.js 官方提供的一个用来编写 C/C++ 插件的稳定模块。不同版本的 Node.js 只要遵循的 应用二进制接口(ABI) 的版本是一...

weixin_44829437的博客 1117

CAN信号定义避坑指南:Kvaser Database Editor里Byteorder和Bitpos设置的那些‘坑’

本文详细解析了在Kvaser Database Editor中配置CAN信号时,字节序(Byteorder)和起始位(Bitpos)设置的常见错误及解决方案。通过实际案例和验证技巧,帮助工程师避免DBC文件配置中的陷阱,确保车载电子系统的稳定通信。

weixin_28678831的博客 360

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

u012831187的博客 1万+

N-API编程之HelloWord

1 技术研究背景 公司产品考虑部署到kubernetes环境中,为了使产品具备云原生应用的一些特性和优点,整个系统需要重构。公司产品原有界面全部基于C/S架构设计,基于云原生的特点,界面逐步实行B/S重构,B/S重构必须选定一种web化技术路线。 1.1 产品特点因素 原有产品大部分使用C/C++语言开发,产品的大部分数据都在共享内存中。因此,总的思路使通过C++写扩展的JavaScript接口,实现对共享内存的读取,实现对数据的读取。并可以对已有的C++模块封装成JavaScript接口,实...

eruter的专栏 1636

最优化方法 25:PDHG

前面的章节要么从原始问题出发,要么从对偶问题出发,通过求解近似点或者一个子优化问题进行迭代,而且推导过程中我们发现根据问题的参数特征,比如矩阵 AAA 是瘦高型的还是矮胖型的,采用对偶和原始问题的复杂度会不一样,可以选择一个更简单的。而这一节,我们将要从原始对偶问题出发来优化,什么是原始对偶问题呢?就是原始优化变量和对偶优化变量(原始函数和共轭函数)混合在一块,看下面的原理就知道了。 1. 原始对偶问题 现在考虑原始优化问题,其中 f,gf,gf,g 为闭凸函数 min⁡f(x)+g(Ax) \min \q

Glooow的博客 4602

MHA高可用及故障切换

1、从宕机崩溃的master 保存二进制日志事件(binlog events);2、识别含有最新的更新 slave 日志3、应用差异的中继日志(relay log)到其他的slave4、应用从master保存的二进制日志事件5、提升一个 salve 为新的master6、使其他的slave连接行的master 进行复制。MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性。

manyulanlanlu的博客 789

labview设置工业摄像头外部触发

使用labview对海康MV-CA013-GM相机设置外部触发。 一、硬件部分 1、硬件引脚定义 2、触发模式设置 相机的触发模式分为两种,一种是内触发模式、另外一种是外触发模式。 3、接线图 信号线的地要跟给信号的设备共地。信号线给高电平时触发拍照。 二、软件部分 1、创建vision acquisition 2、选择使用的摄像头。 3、选择模式。 4、在Acquisition Control中设置这些选项。 5、设置保存图片路径 设置保存路径和保存图片的格式。点击完成即可 参考:https:/

qq_43493715的博客 5665

国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题2(含答案)

国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) ...

无名何许人的博客 1万+

从暴力到 NAN 再到 N-API——Node.js 原生模块开发方式变迁

文章来自作者:死月 在 GitChat 上的分享 点击文末「阅读原文」这场 Chat 看看大家与作者交流了哪些问题 前言 在 Node.js 开发领域中,原生 C++ 模块的开发一直是一个被人冷落的角落。但是实际上在必要的时候,用 C++ 进行 Node.js 的原生模块开发能有意想不到的好处。 性能提升。很多情况下,使用 C++ 进行 Node.js 原生模块开发的性能会比纯 N...

weixin_41355132的博客 2136

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1798

NAPI(New API)

NAPI 网卡

lingzhiwangcn的专栏 2752

2021.07.05【R语言】丨预测lncRNA并绘制venn图

目录摘要环境与方法依赖工具预测工具绘制工具使用命令预测lncRNA统计noncoding_ID绘制Venn图结果展示总结 摘要 接到一个单样品测lncRNA数据的项目,正好拿来练练手,梳理一下lncRNA流程。这里记录预测lncRNA并生成venn图的过程 环境与方法 R version 3.6.3 (2020-02-29) 依赖工具 预测工具 CPC2 CNCI Pfam CPAT 绘制工具 R:VennDiagram 使用命令 预测lncRNA CPC2 #更换env conda activate py

2035

Winform从入门到精通(2)——Button(史上最全)

本文介绍winform中Button控件的详细用法,包括所有属性和事件

qq_34059233的博客 1万+

【HarmonyOS NAPI 深度探索5】N-API 的作用与优势

N-API 是 Node.js 原生模块开发的未来。它不仅简化了开发流程,还提供了卓越的性能和兼容性。如果你想开发一个高效、稳定且易于维护的原生模块,N-API 无疑是最佳选择。对于HarmonyOS 来说,很多系统API都是以C++接口方式提供,这些调用都离不开NAPI的中转,尤其是HarmonyOS Next单线程导致的并发问题也需要用到NAPI来做处理。

轻口味的专栏 861

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Openharmony应用NAPI详解--基础篇

NAPI应用 Openharmony

流风的专栏 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 为什么 Deno 没有众望所归?超越 Node.js 还要做些什么?
下一篇: 粉丝福利,抽5本《新程序员》004期免费送
迷渡
迷渡 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄19年 2405粉丝 124原创
评论 54
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值