Узлы:Что означает «process.binding»?
-
21-12-2019 - |
Вопрос
я видел 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 ++, снаружи контура события, в пуле событий.