在github上process.binding('...')
研究node.js源代码时,我已经看过很多次了。
谁能解释这个功能的作用?
在github上process.binding('...')
研究node.js源代码时,我已经看过很多次了。
谁能解释这个功能的作用?
Answers:
从本质上讲,它是一项功能,可以抓住C ++功能并在javascript中使用。以zlib中process.binding('zlib')
使用的此示例为例
从本质上讲,这是在获取zlib C ++对象,然后其余时间在javascript代码中使用。
因此,当您使用zlib时,您实际上并没有使用C ++库,而是使用了为您包装C ++功能的Javascript库。
它更易于使用
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 ++等效项。
process.binding
似乎internalBinding
从v11.x变为