Node.js
node-addon-api
node-addon-api C++ wrapper'ını öğrenirsin.
node-addon-api
node-addon-api, N-API üzerine kurulu bir C++ sarmalayıcıdır (wrapper). Ham N-API C çağrıları yerine C++ sınıflarıyla çalışırsın; bu, kodu daha okunaklı ve daha az hataya açık yapar. node-addon-api başlık dosyası tek satırla eklenir.
Bir addonWrapper(className, methods) fonksiyonu bu sarmalayıcı fikrini modeller: bir sınıf adı ve yöntem listesi alır, {class, methods, wrapper: 'node-addon-api'} döndürür. Gerçek node-addon-api'de Napi::ObjectWrap ile bir C++ sınıfı JS sınıfına bağlanır. Burada JS ile modelleyip sarmalayıcının ne yaptığını anlıyoruz: karmaşık C çağrılarını sınıf yöntemleriyle gizler. Çıktı node-addon-api olur; bu, sarmalayıcının adıdır.
Sarmalayıcı deseni
node-addon-api'nin temel deseni şudur: bir C++ sınıfı tanımlarsın, yöntemlerini bildirirsin, sonra JS'e açarsın. addonWrapper bunu bir nesne döndürerek modeller. .wrapper özelliği hangi sarmalayıcının kullanıldığını söyler.
Örnek: addonWrapper('Calculator', ['add', 'subtract']) {class: 'Calculator', methods: ['add', 'subtract'], wrapper: 'node-addon-api'} döndürür. .wrapper 'node-addon-api' olur. Bu desen, gerçek bir addon'ın yapısını basit bir nesneyle temsil eder: sınıf adı, yöntemler ve sarmalayıcı. Gerçek kod C++ olsa da yapı aynıdır: bir sınıf, bir yöntem listesi ve bir bağlama mekanizması. console.log(...wrapper) ile hangi sarmalayıcının kullanıldığını doğrularız.
Uygulama Sarmalayıcı fonksiyonu yaz
function addonWrapper(className, methods) yaz. {class: className, methods: methods, wrapper: 'node-addon-api'} döndür. console.log(addonWrapper('Calculator', ['add', 'subtract']).wrapper) yazdır.
Örnek çözümü göster
function addonWrapper(className, methods) {
return {class: className, methods: methods, wrapper: 'node-addon-api'};
}
console.log(addonWrapper('Calculator', ['add', 'subtract']).wrapper);
Kendini test et
-
yöntem listesini döndür
function addonWrapper(className, methods) { return {class: className, methods: ____, wrapper: 'node-addon-api'}; }
Cevabı göster
function addonWrapper(className, methods) { return {class: className, methods: methods, wrapper: 'node-addon-api'}; }
-
Kavramı açıklamasına eşle
- node-addon-api
- C++ sarmalayıcı
- Napi::ObjectWrap
- C++ sınıfını JS'e bağlar
- wrapper
- Sarmalayıcı adı
- methods
- Yöntem listesi
-
addonWrapper(...).wrapper ne döndürür?
addonWrapper('Calculator', ['add']).wrapper
- 'Calculator'
- 'add'
- 'node-addon-api'
- ['add']
Cevabı göster
'node-addon-api' — .wrapper özelliği 'node-addon-api' döndürür.
Sıradaki ders: Binding