lac*_*ass 74 javascript c++ v8 node.js undocumented-behavior
我process.binding('...')通过github上的node.js源代码研究了很多次.
任何人都能解释一下这个函数的作用吗?
process.binding 将 Node.js 的 javascript 端连接到 Node.js 的 C++ 端。Node.js 的 C++ 方面是 Node 所做的许多内部工作的实际实现地。因此,您的许多代码最终都依赖于 C++ 代码。Node.js 正在利用 C++ 的强大功能。
\n\n这是一个例子:
\n\nconst crypto=require(\xe2\x80\x9ccrypto\xe2\x80\x9d)\nconst start=Date.now()\ncrypto.pbkdf2(\xe2\x80\x9ca\xe2\x80\x9d, \xe2\x80\x9cb\xe2\x80\x9d, 100000,512,sha512,()=>{\nconsole.log(\xe2\x80\x9c1\xe2\x80\x9d:Date.now()-start)\n})\nRun Code Online (Sandbox Code Playgroud)\n\nCrypto 是 Node.js 中用于散列和保存密码的内置模块。这就是我们在 Node.js 中实现它的方式,但实际的哈希过程发生在 Node.js 的 C++ 端。
\n\n当node.js运行这个函数时,实际上是在这个函数内部,它将所有参数传递给函数PBKDF2(),即C++代码。该函数执行所有计算并返回结果。这就是 PBKDF 导入到 Node.js 的 javascript 端的方式
const {PBKDF2}=process.binding(\xe2\x80\x9ccrypto\xe2\x80\x9d)\nRun Code Online (Sandbox Code Playgroud)\n\n这就是node.js 的javascript 端与node.js 的c++ 端连接的方式。在 Node.js 的 C++ 端,V8 会将 Node.js 值转换为相应的 C++ 值。
\n