Contexte JavaScript
JavaScript Contexte
La couche de script fournit un contexte d’évaluation JavaScript contrôlé pour les documents qui en ont besoin. Elle est délibérément guidée par la politique: la résolution des modules est explicite, et les échecs apparaissent sous forme d’exceptions typées.
Le Contexte d’Évaluation
JSContext héberge l’évaluation des scripts. Les erreurs levées pendant l’évaluation apparaissent sous forme de JSEvaluationError, maintenant les échecs de script distincts des erreurs côté Python.
Chargement de modules
La résolution des modules est régie par ModuleRegistry, qui associe les spécificateurs de modules aux implémentations. Les modules manquants déclenchent ModuleNotFoundError (l’erreur typée propre à la bibliothèque) plutôt que de renvoyer silencieusement des stubs.
Politiques de Chargement
ModuleLoadPolicy contrôle ce qu’un contexte est autorisé à charger — le mécanisme d’isolation du comportement des scripts dans le traitement côté serveur où l’accès arbitraire aux modules est indésirable.
Conseils et bonnes pratiques
- Enregistrez uniquement les modules dont votre scénario de traitement a besoin; un petit registre constitue le bac à sable.
- Interceptez
JSEvaluationErrorséparément des exceptions génériques afin de distinguer les bugs de script des bugs de pipeline. - Considérez
ModuleNotFoundErrorcomme un signal de politique, pas comme une condition fatale — cela signifie souvent que l’entrée attend un API de navigateur que vous avez choisi de ne pas fournir.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
ModuleNotFoundError lors de l’évaluation | Module non enregistré | Ajoutez-le à ModuleRegistry ou ajustez la politique |
| L’échec du script fait planter le pipeline | JSEvaluationError non détecté | Gérez-le à la frontière d’évaluation |
| Accès inattendu au module | Politique trop permissive | Resserrez ModuleLoadPolicy |
FAQ
L’évaluation du script est-elle requise pour l’analyse?
Non — l’analyse, le CSSOM et la mise en page fonctionnent sans aucun contexte de script.
Comment contrôler ce que les scripts peuvent importer?
Via ModuleRegistry (ce qui existe) et ModuleLoadPolicy (ce qui peut être chargé).
Comment les erreurs de script se manifestent-elles?
En tant qu’exceptions JSEvaluationError du côté Python.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
JSContext | JavaScript contexte d’évaluation |
ModuleRegistry | Registre des spécificateurs de modules |
ModuleLoadPolicy | Contrôle de la politique de chargement des modules |
JSEvaluationError | Échec de l’évaluation du script typé |
ModuleNotFoundError | Échec du module manquant typé |