nodejs: `process.binding`とはどういう意味ですか?
-
21-12-2019 - |
解決
この関数は、必要なように内部モジュールを返します。それは公開されていないので、あなたのコードでそれに頼るべきではありませんが、あなたが物事がどのように機能するかを理解したい場合は、それを使うことができます、あなたはノードの低レベルのオブジェクトで再生することができます。
例えば、ここ timer_wrap
バインディングが登録されています。IT エクスポート Timer
コンストラクタ。lib/timers.js
at's href="https://github.com/nodejs/node/blob/19ff5cf1c50e9d91d0a7a35152d20f175a2385d/lib/timers.js#l3">インポートされた
他のヒント
これは、本質的に外出して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に実装する方法ですが、実際のハッシュプロセスはNode.jsのC ++側で行われます。
process.binding("crypto")
は、このプロセスをSRCディレクトリの輸出業者に取り入れます.Node.jsのC ++ World。 Node.jsのこの側では、V8は、私たちが異なるプログラムの内側にあるnode.js値をブール値または関数またはオブジェクトのようなものに翻訳し、それをC ++の同等物に変換します。
JavaScriptコードがC ++に変換された後、libuvは起こるつもりですが、イベントループの外側のC ++側で上記のコードを実行するためにすべての重い計算を実行します。