Nodejs: `process.binding` nghĩa là gì?


Câu trả lời:


67

Hàm này trả về mô-đun nội bộ, giống như yêu cầu. Nó không công khai, vì vậy bạn không nên dựa vào nó trong mã của mình, nhưng bạn có thể sử dụng nó để chơi với các đối tượng cấp thấp của nút, nếu bạn muốn hiểu cách mọi thứ hoạt động.

Ví dụ, ở đây timer_wrap ràng buộc đã được đăng ký. Nó xuất hàm Timer tạo. Trong lib/timers.jsnó được nhập khẩu


1
process.bindingdường như chuyển thành internalBindingtừ v11.x
jasonxia23

16

Đó là một tính năng về cơ bản ra ngoài và lấy tính năng C ++ và làm cho nó có sẵn bên trong javascript. Lấy ví dụ process.binding('zlib')này được sử dụng trong zlib

Về cơ bản, đây là việc đi ra ngoài và nhận đối tượng zlib C ++ và sau đó nó được sử dụng trong phần còn lại của mã javascript.

Vì vậy, khi bạn sử dụng zlib, bạn không thực sự đi ra ngoài và lấy thư viện C ++, bạn đang sử dụng thư viện Javascript bao bọc tính năng C ++ cho bạn.

Nó làm cho nó dễ sử dụng hơn


1
Cảm ơn vì lời giải thích ngắn gọn và rõ ràng.
Vijayarajan Ravindran

2

process.binding kết nối phía javascript của Node.js với phía C ++ của Node.js. C ++ bên của node.js là nơi thực sự triển khai rất nhiều công việc nội bộ của mọi thứ mà nút đó làm. Vì vậy, rất nhiều mã của bạn cuối cùng dựa vào mã C ++. Node.js đang sử dụng sức mạnh của C ++.

Đây là một ví dụ:

const crypto=require(“crypto”)
const start=Date.now()
crypto.pbkdf2(“a”, “b”, 100000,512,sha512,()=>{
console.log(“1”:Date.now()-start)
})

Crypto là một mô-đun tích hợp trong Node.js để băm và lưu mật khẩu. Đây là cách chúng tôi triển khai nó trong Node.js nhưng quá trình băm thực tế diễn ra ở phía C ++ của node.js.

khi node.js chạy hàm này, thực sự bên trong hàm này, nó chuyển tất cả các đối số cho PBKDF2()hàm là mã c ++. hàm này thực hiện tất cả các phép tính và trả về kết quả. đây là cách PBKDF được nhập vào bên javascript của node.js

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

Vì vậy, đây là cách phía javascript của node.js được kết nối với phía c ++ của node.js. trong phía c ++ của node.js, V8 sẽ dịch các giá trị node.js thành các giá trị tương đương c ++ của chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.