Nodejs: Що означає `process.binding`?


Відповіді:


67

Ця функція повертає внутрішній модуль, наприклад, require. Він не є загальнодоступним, тому вам не слід покладатися на нього у своєму коді, але ви можете використовувати його для гри з об’єктами низького рівня вузла, якщо хочете зрозуміти, як все працює.

Наприклад, тут timer_wrap зареєстровано прив'язку. Він експортує Timer конструктор. У lib/timers.jsньому імпорт


1
process.bindingздається, змінилося на internalBindingз v11.x
jasonxia23,

16

Це функція, яка, по суті, виходить і захоплює функцію С ++ і робить її доступною всередині javascript. Візьмемо цей приклад, process.binding('zlib')який використовується у zlib

Це, по суті, вихід і отримання об’єкта zlib C ++, а потім він використовується інший час у коді javascript.

Отже, коли ви використовуєте zlib, ви фактично не виходите і не хапаєте бібліотеку C ++, ви використовуєте бібліотеку Javascript, яка обгортає для вас функцію C ++.

Це полегшує використання


1
Дякую за коротке та чітке пояснення.
Віджаяраджан Равіндран

2

process.binding з'єднує сторону JavaScript Node.js зі стороною C ++ Node.js. Сторона C ++ node.js - це місце, де насправді реалізовано багато внутрішньої роботи всього, що робить node. Тому багато вашого коду покладається на кінцевий код 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.

коли node.js запускає цю функцію, фактично всередині цієї функції, він передає всі аргументи PBKDF2()функції, яка є кодом c ++. ця функція виконує всі обчислення і повертає результат. ось як імпортується PBKDF на сторону javascript node.js

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

Отож, як сторона javascript node.js пов'язана зі стороною c ++ node.js. на стороні c ++ node.js V8 збирається перевести значення node.js у їх еквіваленти c ++.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.