Контекст JavaScript
JavaScript Контекст
Слой скриптов предоставляет контролируемый JavaScript контекст оценки для документов, которым он нужен. Он преднамеренно управляется политиками: разрешение модулей явно, а сбои проявляются в виде типизированных исключений.
Контекст оценки
JSContext обеспечивает оценку скриптов. Ошибки, возникающие во время оценки, проявляются как JSEvaluationError, отделяя сбои скриптов от ошибок со стороны Python.
Загрузка модулей
Разрешение модулей регулируется ModuleRegistry, который сопоставляет спецификаторы модулей с реализациями. Отсутствующие модули вызывают ModuleNotFoundError (собственное типизированное исключение библиотеки) вместо тихого возврата заглушек.
Политики загрузки
ModuleLoadPolicy контролирует, что контекст может загружать — механизм изоляции поведения скриптов при серверной обработке, когда нежелателен произвольный доступ к модулям.
Советы и лучшие практики
- Регистрируйте только те модули, которые нужны вашему сценарию обработки; небольший реестр — это песочница.
- Отлавливайте
JSEvaluationErrorотдельно от общих исключений, чтобы различать ошибки скрипта и ошибки конвейера. - Воспринимайте
ModuleNotFoundErrorкак сигнальный индикатор политики, а не как фатальное состояние — это часто означает, что ввод ожидает браузерный API, который вы решили не предоставлять.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
ModuleNotFoundError при оценке | Модуль не зарегистрирован | Добавьте его в ModuleRegistry или скорректируйте политику |
| Сбой скрипта приводит к падению конвейера | JSEvaluationError не пойман | Обработайте это на границе оценки |
| Неожиданный доступ к модулю | Политика слишком разрешительная | Ужесточить ModuleLoadPolicy |
FAQ
Требуется ли оценка скрипта для парсинга?
Нет — парсинг, CSSOM и разметка работают без какого-либо контекста скрипта.
Как я могу контролировать, какие скрипты могут импортировать?
Через ModuleRegistry (что существует) и ModuleLoadPolicy (что может загрузиться).
Как проявляются ошибки скриптов?
Как исключения JSEvaluationError со стороны Python.
API Reference Сводка
| Класс/Метод | Описание: |
|---|---|
JSContext | JavaScript контекст оценки |
ModuleRegistry | Реестр указателей модулей |
ModuleLoadPolicy | Контроль политики загрузки модулей |
JSEvaluationError | Ошибка типизированной оценки скрипта |
ModuleNotFoundError | Ошибка типизированного отсутствующего модуля |