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