Programing

Nodejs :`process.binding`은 무엇을 의미합니까?

lottogame 2020. 10. 25. 11:31
반응형

Nodejs :`process.binding`은 무엇을 의미합니까?


githubprocess.binding('...')node.js 소스 코드 를 조사하는 동안 여러 번 보았습니다 .

아무도이 기능이 무엇을하는지 설명 할 수 있습니까?


이 함수는 require와 같은 내부 모듈을 반환합니다. 퍼블릭이 아니기 때문에 코드에 의존해서는 안되지만, 작동 방식을 이해하고 싶다면 노드의 저수준 객체와 함께 플레이하는 데 사용할 수 있습니다.

예를 들어 여기에 timer_wrap 바인딩이 등록되어 있습니다. 그것은 수출 Timer 생성자를. lib/timers.js이를 것 가져


본질적으로 나가서 C ++ 기능을 가져와 javascript 내에서 사용할 수 있도록하는 기능입니다. zlibprocess.binding('zlib') 에서 사용되는 이 예제 보십시오.

이것은 본질적으로 나가서 zlib C ++ 객체를 가져오고 나머지 시간 동안 자바 스크립트 코드에서 사용됩니다.

따라서 zlib를 사용할 때 실제로 나가서 C ++ 라이브러리를 잡는 것이 아니라 C ++ 기능을 래핑하는 Javascript 라이브러리를 사용하는 것입니다.

사용하기 더 쉽습니다.


process.binding은 Node.js의 자바 스크립트 측을 Node.js의 C ++ 측에 연결합니다. node.js의 C ++ 측은 노드가 수행하는 모든 내부 작업이 실제로 구현되는 곳입니다. 따라서 많은 코드가 궁극적으로 C ++ 코드에 의존합니다. Node.js는 C ++의 힘을 사용하고 있습니다.

다음은 예입니다.

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

Crypto는 해싱 및 비밀번호 저장을위한 Node.js의 내장 모듈입니다. 이것이 Node.js에서 구현하는 방법이지만 실제 해싱 프로세스는 node.js의 C ++ 측에서 발생합니다.

process.binding("crypto")이 프로세스를 Node.js의 C ++ 세계인 src 디렉토리의 내보내기로 가져갈 것입니다. Node.js의이 쪽에서 V8은 부울, 함수 또는 객체와 같은 다른 프로그램 내부에 배치 한 node.js 값을 변환하여 C ++에 해당하는 값으로 변환합니다.

자바 스크립트 코드가 C ++로 번역 된 후 libuv가 발생하고 스레드 풀에서 이벤트 루프 외부의 C ++ 측에서 위 코드를 실행하기 위해 모든 무거운 계산을 수행합니다.

참고 URL : https://stackoverflow.com/questions/24042861/nodejs-what-does-process-binding-mean

반응형