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 JSEvaluationError separat från generiska undantag för att skilja skriptfel från pipeline-fel.
  • Behandla ModuleNotFoundError som 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

ProblemOrsakÅtgärd
ModuleNotFoundError vid utvärderingModulen är inte registreradLägg till den i ModuleRegistry eller justera policyn
Skriptfel kraschar pipelinenJSEvaluationError inte fångadHantera det vid utvärderingsgränsen
Oväntad modulåtkomstPolicyn är för permissivSkä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/MetodBeskrivning
JSContextJavaScript utvärderingskontext
ModuleRegistryModulspecifikationsregister
ModuleLoadPolicyKontroll av modulens laddningspolicy
JSEvaluationErrorTypad skriptutvärderingsfel
ModuleNotFoundErrorTypad saknad-modulfel

Se även

 Svenska