Pergunta

Eu vi process.binding('...') muitas vezes, enquanto pesquisava através do node.js o código fonte no github.

Alguém pode me explicar o que essa função faz?

Foi útil?

Solução

Esta função retorna o módulo interno, como o exigem.Não é público, portanto, você não deve confiar em seu código, mas você pode usá-lo para jogar com o nó do baixo nível de objetos, se você quer entender como as coisas funcionam.

Por exemplo, aqui timer_wrap a vinculação é registrado.Ele exportações Timer construtor.No lib/timers.js é importado

Outras dicas

É um recurso que, essencialmente, sai e agarra o recurso de C++ e torná-lo disponível dentro do javascript .Tome este exemplo process.binding('zlib') que é usado em zlib

Esta é, essencialmente, de sair e ficar o zlib objeto C++ e, em seguida, ele está sendo utilizado o resto do tempo no código javascript.

Portanto, quando você usa zlib você não está realmente indo e agarrando a biblioteca C++, você está usando a biblioteca de Javascript que envolve o recurso de C++ para você.

Torna-se mais fácil a utilizar

do processo.ligação conecta-se o javascript do lado do Node.js para o C++ lado do Node.js.C++ lado de node.js é onde um monte de trabalho interno de tudo o que nó não, na verdade é implementado.Assim, muito do seu código depende, em última análise, o código C++.Node.js usa o poder do C++.

Aqui está um exemplo:

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

Criptografia é um built-in módulo de Node.js para criação de algoritmos hash e de guardar palavras-passe.Esta é a forma como implementá-lo em Node.js mas o real processo de hashing tem lugar em C++ lado de node.js.

process.binding("crypto") vai levar este processo para os exportadores de src, onde é c++ mundo de Node.js.Neste lado do Node.js, V8 vai traduzir o node.js valores que colocamos dentro de nossa diferentes programas, como o de um booleano ou de uma função ou de um objeto e de traduzir para as suas C++ equivalentes.

Depois que o código Javascript é traduzido para C++, libuv vai ter lugar e vai fazer todos os cálculos pesados para executar o código acima no lado do c++, fora do loop de eventos, em pool de threads.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top