Контекст JavaScript

JavaScript Контекст

Слой скриптов предоставляет контролируемый JavaScript контекст оценки для документов, которым он нужен. Он преднамеренно управляется политиками: разрешение модулей явно, а сбои проявляются в виде типизированных исключений.


Контекст оценки

JSContext обеспечивает оценку скриптов. Ошибки, возникающие во время оценки, проявляются как JSEvaluationError, отделяя сбои скриптов от ошибок со стороны Python.

Загрузка модулей

Разрешение модулей регулируется ModuleRegistry, который сопоставляет спецификаторы модулей с реализациями. Отсутствующие модули вызывают ModuleNotFoundError (собственное типизированное исключение библиотеки) вместо тихого возврата заглушек.

Политики загрузки

ModuleLoadPolicy контролирует, что контекст может загружать — механизм изоляции поведения скриптов при серверной обработке, когда нежелателен произвольный доступ к модулям.


Советы и лучшие практики

  • Регистрируйте только те модули, которые нужны вашему сценарию обработки; небольший реестр — это песочница.
  • Отлавливайте JSEvaluationError отдельно от общих исключений, чтобы различать ошибки скрипта и ошибки конвейера.
  • Воспринимайте ModuleNotFoundError как сигнальный индикатор политики, а не как фатальное состояние — это часто означает, что ввод ожидает браузерный API, который вы решили не предоставлять.

Распространённые проблемы

ПроблемаПричинаИсправление
ModuleNotFoundError при оценкеМодуль не зарегистрированДобавьте его в ModuleRegistry или скорректируйте политику
Сбой скрипта приводит к падению конвейераJSEvaluationError не пойманОбработайте это на границе оценки
Неожиданный доступ к модулюПолитика слишком разрешительнаяУжесточить ModuleLoadPolicy

FAQ

Требуется ли оценка скрипта для парсинга?

Нет — парсинг, CSSOM и разметка работают без какого-либо контекста скрипта.

Как я могу контролировать, какие скрипты могут импортировать?

Через ModuleRegistry (что существует) и ModuleLoadPolicy (что может загрузиться).

Как проявляются ошибки скриптов?

Как исключения JSEvaluationError со стороны Python.


API Reference Сводка

Класс/МетодОписание:
JSContextJavaScript контекст оценки
ModuleRegistryРеестр указателей модулей
ModuleLoadPolicyКонтроль политики загрузки модулей
JSEvaluationErrorОшибка типизированной оценки скрипта
ModuleNotFoundErrorОшибка типизированного отсутствующего модуля

См. также:

 Русский