Вопрос

я видел process.binding('...') много раз во время исследования через Исходный код node.js на github.

Может ли кто-нибудь объяснить мне, что делает эта функция?

Это было полезно?

Решение

Эта функция возвращает внутренний модуль, например require.Он не является общедоступным, поэтому вам не следует полагаться на него в своем коде, но вы можете использовать его для игры с объектами низкого уровня узла, если хотите понять, как все работает.

Например, здесь timer_wrap привязка зарегистрирована.Это экспорт Timer конструктор.В lib/timers.js его импортированный

Другие советы

Это функция, которая по существу выходит и захватывает функцию C ++ и сделать его доступным внутри JavaScript. Возьмите этот пример process.binding('zlib'), который используется в zlib

Это по сути выходит и получает объект zlib C ++, а затем он используется в остальном времени в коде JavaScript.

Так, когда вы используете zlib, вы на самом деле не выходите И схватывая библиотеку C ++, вы используете библиотеку JavaScript, которая управляет функцией C ++ для вас.

Это облегчает использование

Process.binding Подключает сторону JavaScript из Node.js к стороне C ++ Node.js. С ++ на стороне Node.js - это то, где много внутренней работы всего, что узел, на самом деле, на самом деле реализован. Таким образом, много вашего кода зависит от кода в конечном итоге 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 ++ Node.js.

process.binding("crypto") примет этот процесс к экспортерам каталога SRC, где C ++ World of Node.js. В этой стороне Node.js v8 собирается перевести значения node.js, которые мы помещаем внутри наших различных программ, таких как логический или функция или объект, и перевести его в их эквиваленты C ++.

После того, как код JavaScript переведен на C ++, Libuv собирается проходить и выполнит все тяжелые расчеты для выполнения вышеуказанного кода в стороне C ++, снаружи контура события, в пуле событий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top