Domanda

Ho visto process.binding('...') molte volte mentre si ricernano attraverso il codice sorgente nodo.js su github .

Qualcuno può spiegarmi cosa fa questa funzione?

È stato utile?

Soluzione

Questa funzione restituisce il modulo interno, come richiedere.Non è pubblico, quindi non dovresti fare affidamento sul tuo codice, ma puoi usarlo per giocare con gli oggetti di basso livello del nodo, se vuoi capire come funzionano le cose.

Ad esempio, qui timer_wrap Binding è registrato.It Esportazioni Timer Constructor.In lib/timers.js è importato

Altri suggerimenti

È una caratteristica che si spegne essenzialmente e afferra la funzione C ++ e renderla disponibile all'interno del JavaScript. Prendi questo esempio process.binding('zlib') che viene utilizzato in zlib

Questo è essenzialmente uscito e ottenendo l'oggetto Zlib C ++ e quindi viene utilizzato il resto del tempo nel codice JavaScript.

Quindi quando usi zlib che non stai effettivamente uscendo E afferrando la libreria C ++, stai usando la libreria JavaScript che avvolge la funzione C ++ per te.

rende più facile usare

Process.Binding collega il lato JavaScript del nodo.js al lato C ++ del nodo.js. C ++ lato del nodo.JS è dove un sacco di lavoro interno di tutto ciò che il nodo fa, è effettivamente implementato. Quindi un sacco del tuo codice fa affidamento in definitiva codice C ++. Node.js sta usando la potenza di C ++.

Ecco un esempio:

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

Crypto è un modulo integrato in node.js per hashing e salvando password. È così che lo implementiamo in node.js, ma il processo di hashing effettivo avviene in c ++ lato del nodo.js.

process.binding("crypto") prenderà questo processo agli esportatori della directory src dove è il mondo C ++ del nodo.js. In questo lato del nodo.JS, V8 tradurrà i valori del nodo.js che mettiamo all'interno dei nostri diversi programmi come un booleano o una funzione o un oggetto e traduconolo nei loro equivalenti C ++.

DOPO il codice JavaScript è tradotto in C ++, la libuv avrà luogo e farà tutti i calcoli pesanti per eseguire il codice sopra nel lato C ++, al di fuori del loop dell'evento, nel pool di filo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top