JavaScript kontext
JavaScript Kontext
Vrstva skriptování poskytuje řízený JavaScript vyhodnocovací kontext pro dokumenty, které jej potřebují. Je úmyslně řízena politikou: rozlišení modulů je explicitní a selhání se projeví jako typované výjimky.
Vyhodnocovací kontext
JSContext hostuje vyhodnocování skriptů. Chyby vyvolané během vyhodnocování se projeví jako JSEvaluationError, což udržuje selhání skriptů oddělená od chyb na straně Python.
Načítání modulů
Rozlišení modulů je řízeno ModuleRegistry, který mapuje specifikátory modulů na implementace. Chybějící moduly vyvolají ModuleNotFoundError (vlastní typovanou chybu knihovny) místo tichého vrácení zástupců.
Zásady načítání
ModuleLoadPolicy řídí, co může kontext načíst — mechanismus pro sandboxování chování skriptu při serverovém zpracování, kde je nechtěný libovolný přístup k modulům.
Tipy a osvědčené postupy
- Zaregistrujte pouze moduly, které vaše scénář zpracování potřebuje; malý registr je sandbox.
- Zachyťte
JSEvaluationErrorsamostatně od obecných výjimek, abyste rozlišili chyby skriptu od chyb pipeline. - Považujte
ModuleNotFoundErrorza signál politiky, nikoli za fatální stav — často to znamená, že vstup očekává browser API, který jste se rozhodli neposkytnout.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
ModuleNotFoundError při vyhodnocování | Modul není zaregistrován | Přidejte jej do ModuleRegistry nebo upravte politiku |
| Selhání skriptu zhavaruje pipeline | JSEvaluationError nebyl zachycen | Zpracujte to na hranici vyhodnocení |
| Neočekávaný přístup k modulu | Politika je příliš permisivní | Zpřísněte ModuleLoadPolicy |
FAQ
Je pro parsování vyžadováno vyhodnocení skriptu?
Ne — parsování, CSSOM a rozvržení fungují bez jakéhokoli skriptového kontextu.
Jak mohu ovládat, co skripty mohou importovat?
Pomocí ModuleRegistry (co existuje) a ModuleLoadPolicy (co se může načíst).
Jak se skriptové chyby objeví?
Jako JSEvaluationError výjimky na straně Python.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
JSContext | JavaScript kontext vyhodnocování |
ModuleRegistry | Registr specifikátoru modulu |
ModuleLoadPolicy | Řízení politiky načítání modulů |
JSEvaluationError | Selhání typovaného vyhodnocení skriptu |
ModuleNotFoundError | Selhání typovaného chybějícího modulu |