JavaScript-kontext
JavaScript Kontext
Skriptlagret tillhandahåller ett kontrollerat JavaScript utvärderingssammanhang för dokument som behöver ett. Det är avsiktligt policydrivet: modulupplösning är explicit, och fel visas som typade undantag.
Utvärderingssammanhanget
JSContext värdar skriptutvärdering. Fel som uppstår under utvärderingen visas som JSEvaluationError, vilket håller skriptfel separata från Python-sidans fel.
Modulinläsning
Modulupplösning styrs av ModuleRegistry, som mappar modulspecifikatorer till implementationer. Saknade moduler kastar ModuleNotFoundError (bibliotekets egna typade fel) istället för att tyst returnera stubbar.
Laddningspolicyer
ModuleLoadPolicy styr vad ett sammanhang får ladda — mekanismen för att sandlåda skriptbeteende i server-sidig bearbetning där godtycklig modulåtkomst är oönskad.
Tips och bästa praxis
- Registrera endast de moduler som ditt bearbetningsscenario behöver; ett litet register är sandlådan.
- Fånga
JSEvaluationErrorseparat från generiska undantag för att skilja skriptfel från pipeline-fel. - Behandla
ModuleNotFoundErrorsom en policy-signal, inte ett kritiskt tillstånd — det betyder ofta att indata förväntar sig en webbläsare API som du har valt att inte tillhandahålla.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
ModuleNotFoundError vid utvärdering | Modulen är inte registrerad | Lägg till den i ModuleRegistry eller justera policyn |
| Skriptfel kraschar pipelinen | JSEvaluationError inte fångad | Hantera det vid utvärderingsgränsen |
| Oväntad modulåtkomst | Policyn är för permissiv | Skärp ModuleLoadPolicy |
FAQ
Krävs skriptevaluering för parsning?
Nej — parsning, CSSOM och layout fungerar utan någon skriptkontext.
Hur kontrollerar jag vad skript kan importera?
Genom ModuleRegistry (vad som finns) och ModuleLoadPolicy (vad som kan laddas).
Hur visas skriptfel?
Som JSEvaluationError undantag på Python-sidan.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
JSContext | JavaScript utvärderingskontext |
ModuleRegistry | Modulspecifikationsregister |
ModuleLoadPolicy | Kontroll av modulens laddningspolicy |
JSEvaluationError | Typad skriptutvärderingsfel |
ModuleNotFoundError | Typad saknad-modulfel |