nodejs:'process.binding`是什么意思?
-
21-12-2019 - |
题
我已经看到了github 上的 node.js源代码在研究时多次
解决方案
此函数返回内部模块,如需要。这不是公众,所以你不应该依靠它在你的代码中,但如果你想了解如何工作,你可以用它来玩节点的低级对象。
例如,这里的timer_wrap
绑定是注册的。它导出 Timer
构造函数。在lib/timers.js
中它是导入 其他提示
这是一个基本上熄灭并抓住C ++功能的功能,并使其在JavaScript内部提供。 借用在 zlib
中使用的这个例子这基本上出现并获取zlib c ++对象,然后它正在使用JavaScript代码中的其余时间。
所以当你使用zlib时,你实际上并没有出去 并抓取C ++库,您正在使用javascript库,为您提供C ++功能。
它使得更容易使用
process.binding将node.js的javascript侧连接到节点.js的c ++侧。 Node.js的C ++侧是实际实现了Node的大量内部工作的位置。所以很多代码最终依赖于最终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 ++端进行。
process.binding("crypto")
会将此过程带到src目录的出口商,其中c ++ node.js。在Node.js的这一侧,v8将要转换我们在不同程序中放置的节点,如布尔或函数或对象,并将其转换为C ++等价物。
在JavaScript代码被翻译成C ++之后,Libuv将进行,并将在线池中在C ++侧的外部执行上面的代码执行所有重计算。
不隶属于 StackOverflow