문제

나는 본 적이 process.binding('...') 여러번 조사하면서 github의 node.js 소스 코드.

이 기능이 무엇인지 설명해 줄 수 있는 사람이 있나요?

도움이 되었습니까?

해결책

이 함수는 require와 같은 내부 모듈을 반환합니다.공개되지 않으므로 코드에서 이에 의존해서는 안 되지만, 작동 방식을 이해하려는 경우 노드의 하위 수준 개체를 가지고 놀 때 사용할 수 있습니다.

예를 들어, 여기 timer_wrap 바인딩이 등록되었습니다.그것 수출 Timer 건설자.~ 안에 lib/timers.js 그것은 수입됨

다른 팁

본질적으로 C ++ 기능을 가져오고 JavaScript에서 사용할 수있게하는 기능입니다. zlib

에 사용되는이 예제 예제 process.binding('zlib')

이것은 본질적으로 Zlib C ++ 객체를 꺼내고 얻은 다음 JavaScript 코드에서 나머지 시간 동안 사용되고 있습니다.

그래서 zlib을 사용할 때 실제로 나가지 않습니다. C ++ 라이브러리를 잡으면 C ++ 기능을 래핑하는 JavaScript 라이브러리를 사용하고 있습니다.

를 쉽게 사용할 수 있습니다.

process.binding node.js의 JavaScript 측면을 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에서 그것을 구현하는 방법입니다. 그러나 실제 해시 프로세스는 노드의 C ++ 측에서 수행됩니다.

process.binding("crypto")는이 프로세스를 SRC 디렉토리의 수출 업체에 가져갈 것입니다. Node.j의 세계는 C ++ 세계입니다. Node.js 의이 측면에서 V8은 부울 또는 함수 또는 객체와 같은 다른 프로그램 내부에 배치 된 Node.js 값을 번역하고이를 C ++ 등가물로 변환 할 것입니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top