Nodejs:“ process.binding”是什么意思?


Answers:


66

该函数返回内部模块,如require。它不是公共的,因此您不应在代码中依赖它,但如果您想了解事物的工作原理,则可以将其用于节点的低级对象。

例如,在这里 timer_wrap注册绑定。它导出 Timer构造函数。在lib/timers.js它的进口


1
process.binding似乎internalBinding从v11.x变为
jasonxia23 '18

16

从本质上讲,它是一项功能,可以抓住C ++功能并在javascript中使用。以zlib中process.binding('zlib')使用的此示例为例

从本质上讲,这是在获取zlib C ++对象,然后其余时间在javascript代码中使用。

因此,当您使用zlib时,您实际上并没有使用C ++库,而是使用了为您包装C ++功能的Javascript库。

它更易于使用


1
感谢您的简短说明。
Vijayarajan Ravindran

2

process.binding将Node.js的javascript端连接到Node.js的C ++端。实际上,node.js的C ++方面是该节点所做的许多内部工作的地方。因此,您的许多代码最终都依赖于C ++代码。Node.js正在使用C ++的强大功能。

这是一个例子:

const crypto=require(“crypto”)
const start=Date.now()
crypto.pbkdf2(“a”, “b”, 100000,512,sha512,()=>{
console.log(“1”:Date.now()-start)
})

Crypto是Node.js中的内置模块,用于哈希和保存密码。这就是我们在Node.js中实现它的方式,但是实际的哈希过程是在node.js的C ++端进行的。

当node.js运行此函数时,实际上是在此函数内部,它将所有参数传递给该PBKDF2()函数,即c ++代码。此函数执行所有计算并返回结果。这就是PBKDF如何导入到node.js的javascript端

const {PBKDF2}=process.binding(“crypto”)

因此,这就是node.js的javascript端连接到node.js的c ++端的方式。在node.js的c ++方面,V8将把node.js的值转换为它们的c ++等效项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.