Контекст 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Помилка типізованого відсутнього модуля

Дивіться також

 Українська