我在node.js source code on github上搜索的时候见过很多次process.binding('...')
。
谁能给我解释一下这个函数是做什么的?
发布于 2014-06-05 00:39:47
发布于 2017-10-24 19:01:13
它本质上是一种获取C++特性并使其在javascript中可用的特性。以zlib中使用的process.binding('zlib')
为例
这实际上是获取zlib对象,然后在其余时间在C++代码中使用。
因此,当您使用zlib时,您实际上并不是在获取C++库,而是在使用为您包装C++特性的Javascript库。
它使它更易于使用
发布于 2019-06-10 15:48:22
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++等效值。
https://stackoverflow.com/questions/24042861
复制相似问题