Contesto JavaScript
JavaScript Contesto
Il livello di scripting fornisce un contesto di valutazione JavaScript controllato per i documenti che ne hanno bisogno. È deliberatamente guidato dalle politiche: la risoluzione dei moduli è esplicita e i fallimenti emergono come eccezioni tipizzate.
Il Contesto di Valutazione
JSContext ospita la valutazione degli script. Gli errori generati durante la valutazione emergono come JSEvaluationError, mantenendo i fallimenti degli script distinti dagli errori lato Python.
Caricamento dei Moduli
La risoluzione dei moduli è governata da ModuleRegistry, che mappa gli identificatori dei moduli alle implementazioni. I moduli mancanti generano ModuleNotFoundError (l’errore tipizzato della libreria) anziché restituire silenziosamente stub.
Politiche di Caricamento
ModuleLoadPolicy controlla ciò che un contesto è autorizzato a caricare — il meccanismo per isolare il comportamento degli script nell’elaborazione lato server dove l’accesso arbitrario ai moduli è indesiderato.
Suggerimenti e migliori pratiche
- Registra solo i moduli di cui il tuo scenario di elaborazione ha bisogno; un registro ridotto è la sandbox
- Gestisci
JSEvaluationErrorseparatamente dalle eccezioni generiche per distinguere i bug degli script da quelli della pipeline - Considera
ModuleNotFoundErrorcome un segnale di policy, non come una condizione fatale — spesso significa che l’input si aspetta un API del browser che hai scelto di non fornire
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
ModuleNotFoundError in valutazione | Modulo non registrato | Aggiungilo a ModuleRegistry o regola la politica |
| Il fallimento dello script blocca la pipeline | JSEvaluationError non rilevato | Gestiscilo al confine della valutazione |
| Accesso al modulo inaspettato | Politica troppo permissiva | Restringi ModuleLoadPolicy |
FAQ
È necessaria l’esecuzione di script per l’analisi?
No — parsing, CSSOM e layout funzionano senza alcun contesto script.
Come controllo cosa possono importare gli script?
Attraverso ModuleRegistry (ciò che esiste) e ModuleLoadPolicy (ciò che può essere caricato).
Come si manifestano gli errori degli script?
Come eccezioni JSEvaluationError sul lato Python.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
JSContext | JavaScript contesto di valutazione |
ModuleRegistry | Registro dei specificatori di modulo |
ModuleLoadPolicy | Controllo della politica di caricamento del modulo |
JSEvaluationError | Errore di valutazione di script tipizzato |
ModuleNotFoundError | Errore di modulo mancante tipizzato |