- İlk adım, üç adımdır: kayıt, bir olayı yakalama ve bunu betikler klasörüne kaydetme.
- Ev sahibi GraalVM paketini içerir, bu yüzden gerçek JavaScript yazarsınız ve onu kendiniz asla yüklemezsiniz.
- Betikler, Java yeniden derlemesi olmadan saniyeler içinde yeniden yüklenir.
- Bir betik, yalnızca ev sahibinin host-access beyaz listesi aracılığıyla sunduğu nesneleri çağırabilir.
İlk bir GraalVM JavaScript betiği yazmak, üç küçük adımdan oluşur: betiği ana makinenin giriş noktasıyla kaydetmek, bir olaya veya modüle bağlamak ve motorun yükleyebilmesi için betikler klasörüne kaydetmek. Motor, GraalVM Çok Dilli API üzerinde çalışır, bu nedenle betik gerçek JavaScript'tir ve herhangi bir Java derlemesi olmadan yeniden yüklenir.
Opal Nerede Çalışır
Opal, bir Fabric modudur ve GraalVM JavaScript betik çalıştırma motoruna sahiptir, bu nedenle bu adımlar doğrudan uygulanır. Başlamak için betik dokümanlarına bakın.
İlk olarak ihtiyacınız olanlar
Motoru yerleştiren bir ana program. Ana program GraalVM JavaScript ile birlikte gelir, komut dosyalarının çağırabileceği bir nesne kümesini sunar ve bir komut dosyası klasörünü izler. GraalVM'i kendiniz yüklemeyin; ana program onu içerir. Ana program size verdiği nesnelere karşı düz JavaScript yazarsınız.
Bu nesnelerin neye karşılık geldiğini bilmek yardımcı olur, ancak başlamak için herhangi bir Java yazmanıza gerek yoktur.
Üç adım
Betikleri klasörünü bul
Bir betik dosyası oluşturun
.js (veya .mjs) dosyası oluşturun. Sunucu, bir sonraki script yüklemesinde bunu algılayacaktırKaydet ve bağla
En basit örnek
Çoğu ana program, kendini kaydetmek için bir giriş noktası ve JavaScript'i programa bağlayan birkaç ara nesne sunar. Tam adlar ana programa göre değişse de, yapı aynıdır. İlk betik genellikle kendini duyurur ve tek bir olaya tepki verir:
// Register the script with the host (names vary by host).
script.register({
name: "hello-world",
version: "1.0.0",
});
// React to an event the host exposes.
script.on("enable", () => {
client.print("Hello from my first script.");
});Gerçek nesne ve yöntem adları için ana programın kendi API referansını okuyun. Önemli olan örüntüdür: kaydet, ardından bir olumayı tetikle veya bir modül tanımla
Çalışırken canlı yenileme
Dosyayı kaydedin ve betikleri yeniden yükleyin (veya canlı yeniden yüklemeyi desteklemiyorsa ana programı yeniden başlatın). Değişiklik, yeniden derleme olmadan etkili olur. Bu hızlı döngü, bir mod yerine betik yazmanın ana nedeni: bir betik saniyeler içinde yeniden yüklenirken, derlenmiş bir mod yeniden derlenmeli ve yeniden başlatılmalıdır.
| Yaklaşım | Yineleme döngüsü | Dil | Ne zaman uygun |
|---|---|---|---|
| GraalVM JavaScript betiği | Düzenle, kaydet, yeniden yükle | JavaScript | Hızlı düzeltmeler, özel davranış |
| Derlenmiş mod | Yeniden derle, yeniden başlat | Java veya Kotlin | Daha büyük özellikler, daha derin bağlantılar |
Yazılar neler yapabilir ve neler yapamaz
Bir betik, yalnızca ana nesne tarafından sunulan nesnelere erişebilir. Ana nesne, GraalVM Çoklu Dil Barındırma ana erişim beyaz listesi aracılığıyla betiklerin erişebileceği sınıfları ve yöntemleri belirtir ve varsayılan olarak reddeder. Bu, betikleri güvenli ve öngörülebilir tutar. İstediğiniz nesne sunulmamışsa, ana nesne onu eklemek zorundadır; betik tarafında beyaz listeyi aşamazsınız.
SSS
Hayır. Ana program GraalVM ve JavaScript motorunu içerir. Siz sadece JavaScript dosyasını yazın ve betikler klasörüne bırakın.
Evet. Motor, modüllerle import ve export de dahil olmak üzere son ECMAScript özelliklerini destekler, bu yüzden eski bir alt kümeyle sınırlı kalmıyorsunuz.
Dosyanın sunucunun script klasöründe olduğundan, sunucunun beklediği uzantıya sahip olduğundan ve sunucunun giriş noktasıyla kayıtlı olduğundan emin olun. Kayıt çağrısındaki bir yazım hatası genellikle neden olur.
Hayır. Motor, ana JVM içinde yerleştirilmiştir, bu yüzden betiğiniz ana programa, bağımsız bir Node.js çalışma zamanına değil, iletişim kurar.