Contexto JavaScript
JavaScript Contexto
A camada de script fornece um contexto de avaliação JavaScript controlado para documentos que necessitam de um. É deliberadamente orientada por políticas: a resolução de módulos é explícita, e falhas são expostas como exceções tipadas.
O Contexto de Avaliação
JSContext hospeda a avaliação de scripts. Erros levantados durante a avaliação são expostos como JSEvaluationError, mantendo as falhas de script distintas dos erros do lado Python.
Carregamento de Módulo
A resolução de módulos é governada por ModuleRegistry, que mapeia especificadores de módulos para implementações. Módulos ausentes levantam ModuleNotFoundError (o erro tipado próprio da biblioteca) em vez de retornar silenciosamente stubs.
Políticas de Carregamento
ModuleLoadPolicy controla o que um contexto tem permissão para carregar — o mecanismo para isolar o comportamento de scripts no processamento lado-servidor onde o acesso arbitrário a módulos é indesejado.
Dicas e Melhores Práticas
- Registre apenas os módulos que seu cenário de processamento necessita; um registro pequeno é o sandbox.
- Capture
JSEvaluationErrorseparadamente das exceções genéricas para distinguir bugs de script de bugs de pipeline. - Trate
ModuleNotFoundErrorcomo um sinal de política, não como uma condição fatal — frequentemente significa que a entrada espera um API de navegador que você optou por não fornecer.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
ModuleNotFoundError na avaliação | Módulo não registrado | Adicione-o a ModuleRegistry ou ajuste a política |
| Falha no script interrompe o pipeline | JSEvaluationError não capturado | Trate-o na fronteira de avaliação |
| Acesso inesperado ao módulo | Política muito permissiva | Restrinja ModuleLoadPolicy |
FAQ
A avaliação de script é necessária para a análise?
Não — parsing, CSSOM e layout funcionam sem nenhum contexto de script.
Como controlo o que os scripts podem importar?
Através de ModuleRegistry (o que existe) e ModuleLoadPolicy (o que pode carregar).
Como os erros de script surgem?
Como exceções JSEvaluationError no lado Python.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
JSContext | JavaScript contexto de avaliação |
ModuleRegistry | Registro de especificadores de módulo |
ModuleLoadPolicy | Controle de política de carregamento de módulo |
JSEvaluationError | Falha de avaliação de script tipada |
ModuleNotFoundError | Falha de módulo ausente tipada |