Câu hỏi phỏng vấn Node.js
Câu hỏi

N-API trong Node.js là gì?

Câu trả lời

N-API trong Node.js là một API dành cho việc xây dựng các Addon gốc (native Addons). N-API độc lập với JavaScript runtime cơ bản (ví dụ như V8) và được duy trì như một phần của chính Node.js. API này sẽ ổn định về giao diện nhị phân ứng dụng (ABI) qua các phiên bản của Node.js. Mục đích của N-API là để cách ly các addon khỏi những thay đổi trong engine JavaScript cơ bản và cho phép các module được biên dịch cho một phiên bản Node.js chính có thể chạy mà không cần biên dịch lại trên các phiên bản khác.

N-API cung cấp một API C giúp đảm bảo sự ổn định ABI qua các phiên bản Node.js khác nhau và các cấp độ biên dịch khác nhau. Một API C++ có thể dễ sử dụng hơn. Để hỗ trợ việc sử dụng C++, dự án duy trì một module bọc C++ gọi là node-addon-api. Module bọc này cung cấp một API C++ có thể inline. Các binary được xây dựng với node-addon-api sẽ phụ thuộc vào các biểu tượng cho các hàm C dựa trên Node-API được xuất bởi Node.js. node-addon-api là một cách hiệu quả hơn để viết mã gọi Node-API.

Ví dụ, phần mã sau đây cho thấy mã node-addon-api và phần thứ hai cho thấy những gì thực sự được sử dụng trong addon:

javascript Copy
Object obj = Object::New(env);

Node-API cũng hỗ trợ các API thử nghiệm và ổn định. Cho đến phiên bản 9, các phiên bản Node-API được cộng thêm và độc lập với phiên bản Node.js. Điều này có nghĩa là mỗi phiên bản là một sự mở rộng của phiên bản trước đó vì nó có tất cả các API từ phiên bản trước đó. Mỗi phiên bản Node.js chỉ hỗ trợ một phiên bản Node-API duy nhất. Ví dụ, v18.15.0 chỉ hỗ trợ Node-API phiên bản 8. Sự ổn định ABI được đạt được vì phiên bản 8 là một tập hợp con chặt chẽ của tất cả các phiên bản trước đó. Từ phiên bản 9 trở đi, mặc dù các phiên bản Node-API tiếp tục được đánh số độc lập, một addon chạy với phiên bản Node-API 9 có thể cần mã thay đổi. Tuy nhiên, sự ổn định ABI vẫn được duy trì vì các phiên bản Node.js hỗ trợ các phiên bản Node-API cao hơn 8 sẽ hỗ trợ tất cả các phiên bản từ 8 đến phiên bản cao nhất.

middle

middle

Gợi ý câu hỏi phỏng vấn

senior

Sự khác biệt giữa dependencies, devDependenciespeerDependencies trong tệp package.json là gì?

middle

WASI trong Nodejs là gì?

senior

Khi nào không nên sử dụng Node.js?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào