Lo he visto process.binding('...')
muchas veces mientras investigaba a través del código fuente de node.js en github .
¿Alguien puede explicarme qué hace esta función?
javascript
c++
node.js
v8
undocumented-behavior
laconbajo
fuente
fuente
process.binding
parece cambiarinternalBinding
de v11.xEs una característica que esencialmente sale y toma la característica C ++ y la hace disponible dentro del javascript. Tome este ejemplo
process.binding('zlib')
que se usa en zlibBásicamente, esto es salir y obtener el objeto zlib C ++ y luego se usa el resto del tiempo en el código javascript.
Entonces, cuando usa zlib, en realidad no sale y toma la biblioteca C ++, está usando la biblioteca Javascript que incluye la función C ++ para usted.
Facilita su uso
fuente
process.binding conecta el lado javascript de Node.js con el lado C ++ de Node.js. El lado C ++ de node.js es donde se implementa una gran parte del trabajo interno de todo lo que hace el nodo. Entonces, gran parte de su código se basa en última instancia en el código C ++. Node.js está usando el poder de C ++.
Aquí hay un ejemplo:
const crypto=require(“crypto”) const start=Date.now() crypto.pbkdf2(“a”, “b”, 100000,512,sha512,()=>{ console.log(“1”:Date.now()-start) })
Crypto es un módulo integrado en Node.js para hacer hash y guardar contraseñas. Así es como lo implementamos en Node.js, pero el proceso de hash real tiene lugar en el lado C ++ de node.js.
cuando node.js ejecuta esta función, en realidad dentro de esta función, pasa todos los argumentos a la
PBKDF2()
función que es el código c ++. esta función hace todos los cálculos y devuelve el resultado. así es como PBKDF se importa al lado javascript de node.jsconst {PBKDF2}=process.binding(“crypto”)
Entonces, así es como el lado javascript de node.js está conectado al lado c ++ de node.js. en el lado c ++ de node.js, V8 traducirá los valores de node.js a sus equivalentes de c ++.
fuente