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?
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?
Respuestas:
Esta función devuelve un módulo interno, como require. No es público, por lo que no debe confiar en él en su código, pero puede usarlo para jugar con los objetos de bajo nivel del nodo, si desea comprender cómo funcionan las cosas.
Por ejemplo, aquí timer_wrap
se registra la vinculación. Se exporta el Timer
constructor. En lib/timers.js
es importado
Es 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 zlib
Bá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
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.js
const {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 ++.
process.binding
parece cambiarinternalBinding
de v11.x