Nodejs: ¿Qué significa `process.binding`?

Respuestas:

67

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.jses importado

vkurchatkin
fuente
1
process.bindingparece cambiar internalBindingde v11.x
jasonxia 23 de
16

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

Mohamed Ben HEnda
fuente
1
Gracias por la breve y nítida explicación.
Vijayarajan Ravindran
2

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 ++.

Yilmaz
fuente