Konteks JavaScript
JavaScript Konteks
Lapisan scripting menyediakan konteks evaluasi JavaScript yang terkontrol untuk dokumen yang membutuhkannya. Ini sengaja berbasis kebijakan: resolusi modul eksplisit, dan kegagalan muncul sebagai pengecualian bertipe.
Konteks Evaluasi
JSContext menampung evaluasi skrip. Kesalahan yang muncul selama evaluasi muncul sebagai JSEvaluationError, menjaga kegagalan skrip tetap terpisah dari kesalahan sisi Python.
Pemuat Modul
Resolusi modul diatur oleh ModuleRegistry, yang memetakan spesifikator modul ke implementasi. Modul yang hilang memicu ModuleNotFoundError (kesalahan bertipe milik perpustakaan) alih-alih secara diam-diam mengembalikan stub.
Kebijakan Muat
ModuleLoadPolicy mengontrol apa yang dapat dimuat oleh sebuah konteks — mekanisme untuk sandboxing perilaku skrip dalam pemrosesan sisi server di mana akses modul sewenang-wenang tidak diinginkan.
Tips dan Praktik Terbaik
- Daftarkan hanya modul yang diperlukan oleh skenario pemrosesan Anda; registri kecil adalah sandbox
- Tangkap
JSEvaluationErrorsecara terpisah dari pengecualian umum untuk membedakan bug skrip dari bug pipeline - Anggap
ModuleNotFoundErrorsebagai sinyal kebijakan, bukan kondisi fatal — seringkali itu berarti input mengharapkan browser API yang Anda pilih untuk tidak disediakan
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
ModuleNotFoundError pada evaluasi | Modul tidak terdaftar | Tambahkan ke ModuleRegistry atau sesuaikan kebijakan |
| Kegagalan skrip menyebabkan pipeline crash | JSEvaluationError tidak tertangkap | Tangani di batas evaluasi |
| Akses modul tak terduga | Kebijakan terlalu permisif | Perketat ModuleLoadPolicy |
FAQ
Apakah evaluasi skrip diperlukan untuk parsing?
Tidak — parsing, CSSOM, dan layout bekerja tanpa konteks skrip apa pun.
Bagaimana saya mengontrol apa yang dapat diimpor oleh skrip?
Melalui ModuleRegistry (apa yang ada) dan ModuleLoadPolicy (apa yang dapat dimuat).
Bagaimana kesalahan skrip muncul?
Sebagai pengecualian JSEvaluationError di sisi Python.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
JSContext | JavaScript konteks evaluasi |
ModuleRegistry | Registri penunjuk modul |
ModuleLoadPolicy | Kontrol kebijakan pemuatan modul |
JSEvaluationError | Kegagalan evaluasi skrip bertipe |
ModuleNotFoundError | Kegagalan modul yang hilang bertipe |