CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

index.js
// addonWrapper fonksiyonu yaz
// sınıf adı ve yöntem listesi alır
// {class, methods, wrapper: 'node-addon-api'} döndürür
// wrapper değerini yazdır
// buraya yaz

Örnek çözüm

index.js
function addonWrapper(className, methods) {
  return {class: className, methods: methods, wrapper: 'node-addon-api'};
}
console.log(addonWrapper('Calculator', ['add', 'subtract']).wrapper);

Beklenen çıktı

node-addon-api

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 yöntem listesini döndür

Soru
function addonWrapper(className, methods) { return {class: className, methods: ____, wrapper: 'node-addon-api'}; }
Cevap
function addonWrapper(className, methods) { return {class: className, methods: methods, wrapper: 'node-addon-api'}; }

Açıklama: methods parametresi doğrudan döndürülür.

2 Kavramı açıklamasına eşle

Kavram Anlamı
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

3 addonWrapper(...).wrapper ne döndürür?

index.js
addonWrapper('Calculator', ['add']).wrapper
  • 'Calculator'
  • 'add'
  • 'node-addon-api' Doğru cevap
  • ['add']

Açıklama: .wrapper özelliği 'node-addon-api' döndürür.

Uzman bölümündeki tüm dersler