Pregunta

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?

¿Fue útil?

Solución

Esta función devuelve un módulo interno, como require.No es público, por lo que no debes confiar en él en tu código, pero puedes usarlo para jugar con los objetos de bajo nivel del nodo, si quieres entender cómo funcionan las cosas.

Por ejemplo, aquí timer_wrap la encuadernación está registrada.Él exportaciones Timer constructor.En lib/timers.js es importado

Otros consejos

Es una característica que esencialmente apaga y agarra la función C ++ y ponga a disposición dentro del JavaScript. Tome este ejemplo process.binding('zlib') que se usa en zlib

Esto es esencialmente salir y obtener el objeto Zlib C ++ y luego se está utilizando el resto del tiempo en el código JavaScript.

Entonces, cuando usa Zlib, no estás saliendo Y agarrando la biblioteca de C ++, está utilizando la biblioteca JavaScript que envuelve la función C ++ para usted.

hace que sea más fácil de usar

Process.binding conecta el lado javascript de Node.js con el lado C++ de Node.js.El lado C++ de node.js es donde realmente se implementa gran parte del trabajo interno de todo lo que hace node.Por lo tanto, gran parte de su código depende, en última instancia, del código C++.Node.js utiliza 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 realizar hash y guardar contraseñas.Así es como lo implementamos en Node.js, pero el proceso de hash real se lleva a cabo en el lado C++ de node.js.

process.binding("crypto") Llevaremos este proceso a los exportadores del directorio src donde está el mundo c++ de Node.js.En este lado de Node.js, V8 traducirá los valores de node.js que colocamos dentro de nuestros diferentes programas como un booleano, una función o un objeto y los traducirá a sus equivalentes en C++.

Después de que el código Javascript se traduzca a C++, se llevará a cabo libuv y realizará todos los cálculos pesados ​​para ejecutar el código anterior en el lado de C++, fuera del bucle de eventos, en el grupo de subprocesos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top