implementing-jsc-classes-zig
Generuj klasy JavaScript z powiązaniami Zig dla Bun — integracja JSC bez ręcznego kodu
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Umiejętność do tworzenia klas JavaScript przy użyciu generatora powiązań Zig w Bun. Definiujesz interfejs klasy w pliku .classes.ts, a narzędzie automatycznie generuje kod łączący JavaScript z implementacją w Zig. Idealne do rozszerzania Bun o nowe API — obsługuje konstruktory, metody, gettery, cachowanie wartości i finalizację zasobów. Eliminuje ręczne pisanie kodu C++/Zig do integracji JSC.
Jak używać
Utwórz plik .classes.ts w swoim projekcie Bun, w którym zdefiniujesz strukturę klasy JavaScript. Użyj funkcji define() z opcjami takimi jak name (nazwa klasy), constructor (czy ma publiczny konstruktor), proto (właściwości i metody), finalize (czy wymaga czyszczenia zasobów) i cache (czy cachować wartości właściwości).
W pliku .zig zaimplementuj strukturę odpowiadającą zdefiniowanej klasie. Dodaj pole js wskazujące na wygenerowany kod JSC.Codegen, oraz funkcje toJS, fromJS i fromJSDirect do konwersji między Zig a JavaScript.
Zaimplementuj funkcję constructor w Zig, która przyjmuje globalObject i callFrame, inicjalizuje strukturę i zwraca instancję. Ta funkcja będzie wywoływana gdy użytkownik tworzy nową instancję klasy w JavaScript.
Dla każdej metody zdefiniowanej w proto dodaj odpowiadającą jej funkcję w strukturze Zig. Każda metoda powinna przyjmować this (instancję), globalObject i callFrame, a zwracać JSC.JSValue lub bun.JSError.
Dla właściwości z opcją getter zaimplementuj funkcję getPropertyName w Zig, która zwraca JSC.JSValue. Jeśli ustawiłeś cache: true, wartość będzie automatycznie cachowana przez WriteBarrier.
Generator automatycznie tworzy kod C++/Zig łączący definicję .classes.ts z implementacją Zig — nie musisz ręcznie pisać kodu integracyjnego. Skompiluj projekt, a Twoja klasa będzie dostępna w JavaScript z pełnym wsparciem dla konstruktora, metod i getterów.