热点资讯
新闻动态 你的位置:mgm娱乐平台客户端 > 新闻动态 > 【七彩虹教育】addon 是什么_Node_js_npm
【七彩虹教育】addon 是什么_Node_js_npm发布日期:2025-06-26 13:50    点击次数:158

addon 这个单词来源于英文的复合名词 add-on,add-on 来自短语 add on,意为附加物,可翻译为插件。

在 Node.js 领域,addon 是一种特殊模块,和普通的 JS 包的区别在于 addon 主要是用 C/C++ 写的,而普通模块是用 JS 写的。

例如我们使用的 npm 库 canvas、node-sass、sqlite3 等,这些就是 addon 模块,我们可以在它们的安装目录中看到里面有 .node 后缀名的文件。

addon 适用场景

addon 的开发和使用,相对纯 JS 模块都比较复杂,一般只有特定场景会使用,包括:

性能优化

众所周知,C++ 相对 JS 有绝对的性能优势。addon 技术使得 Node.js 拥有接近 C++ 的性能。如果你的 Node.js 工程有一小块业务属于 CPU 密集型计算,可以使用 addon 技术来优化性能。

复用现有 C/C++ 库

展开剩余63%

Node.js 诞生至今已经有 15 年了,开发者通常会将其他成熟语言常用的库,用 JS 再实现一次。

但是有些 CPU 密集型计算的库,不适合用 JS 写,这时就会将原有的成熟的 C++ 库封装为 addon。例如 sharp、canvas 等。 当然,你也可以仅仅因为不想重复造轮子,而将一个 C++ 库封装为 addon。

需要调用 Node.js 未封装的操作系统能力

如果你的 JS 程序需要调用一些操作系统上面的能力,而这些能力 Node.js 并没有帮你封装成标准库,这时候你就得自己写一个 addon,在 addon 里面用 C/C++ 代码去调相关的操作系统接口。

addon 生命周期介绍

开发者完成 addon 开发后,可以将其发布到各种仓库,供后续自己或其他开发者使用。

不同于纯 JS 模块,addon 模块中有 C/C++ 代码,必须编译后才能使用。addon 开发者可以只发布 C/C++ 源码,让它在用户 npm install 装包的时候自动进行编译构建;也可以把编译产物也一起发布,让用户侧省去编译构建的步骤。

如下图所示,是 addon 生命周期。

其中,预构建是个可选环节,是否使用取决于 addon 开发者根据特定 addon 自身情况的选择。 开发者可以选择提前编译构建出产物,以备后续随代码发布到 npm 仓库中。 如果没有预构建,addon 会在安装时调用构建工具本地构建。 所以安装没有预构建产物的 addon,需要环境中有必备的构建工具。

发布于:湖南省