Nodejs: Was bedeutet "process.binding"?

Antworten:

67

Diese Funktion gibt das interne Modul zurück, wie erforderlich. Es ist nicht öffentlich, daher sollten Sie sich in Ihrem Code nicht darauf verlassen, aber Sie können es verwenden, um mit den Objekten auf niedriger Ebene des Knotens zu spielen, wenn Sie verstehen möchten, wie die Dinge funktionieren.

Zum Beispiel, hier timer_wrap ist verbindlich registriert hat . Es exportiert Timer Konstruktor. In lib/timers.jses ist importiert

vkurchatkin
quelle
1
process.bindingscheint sich internalBindingvon v11.x zu ändern
jasonxia23
16

Es ist eine Funktion, die im Wesentlichen ausgeht und die C ++ - Funktion greift und sie im Javascript verfügbar macht. Nehmen Sie dieses Beispiel process.binding('zlib'), das in zlib verwendet wird

Dies geht im Wesentlichen aus und holt das zlib C ++ - Objekt und wird dann den Rest der Zeit im Javascript-Code verwendet.

Wenn Sie also zlib verwenden, gehen Sie nicht wirklich raus und greifen auf die C ++ - Bibliothek zu, sondern auf die Javascript-Bibliothek, die die C ++ - Funktion für Sie umschließt.

Es macht es einfacher zu bedienen

Mohamed Ben HEnda
quelle
1
Vielen Dank für die kurze und klare Erklärung.
Vijayarajan Ravindran
2

process.binding verbindet die Javascript-Seite von Node.js mit der C ++ - Seite von Node.js. Auf der C ++ - Seite von node.js wird ein Großteil der internen Arbeit von allem, was der Knoten tut, tatsächlich implementiert. Ein Großteil Ihres Codes basiert also letztendlich auf C ++ - Code. Node.js nutzt die Leistung von C ++.

Hier ist ein Beispiel:

const crypto=require(“crypto”)
const start=Date.now()
crypto.pbkdf2(“a”, “b”, 100000,512,sha512,()=>{
console.log(“1”:Date.now()-start)
})

Crypto ist ein in Node.js integriertes Modul zum Hashing und Speichern von Passwörtern. So implementieren wir es in Node.js, aber der eigentliche Hashing-Prozess findet auf der C ++ - Seite von node.js statt.

Wenn node.js diese Funktion tatsächlich innerhalb dieser Funktion ausführt, werden alle Argumente an die PBKDF2()Funktion übergeben, bei der es sich um den C ++ - Code handelt. Diese Funktion führt alle Berechnungen durch und gibt das Ergebnis zurück. Auf diese Weise wurde PBKDF in die Javascript-Seite von node.js importiert

const {PBKDF2}=process.binding(“crypto”)

Auf diese Weise wird die Javascript-Seite von node.js mit der c ++ - Seite von node.js verbunden. Auf der c ++ - Seite von node.js übersetzt V8 die Werte von node.js in ihre c ++ - Entsprechungen.

Yilmaz
quelle