JavaScript 컨텍스트
JavaScript 컨텍스트
스크립팅 계층은 JavaScript 평가 컨텍스트가 필요한 문서에 대해 제어된 컨텍스트를 제공합니다. 이는 정책 중심으로 설계되어 모듈 해석이 명시적이며, 실패는 타입이 지정된 예외로 표출됩니다.
평가 컨텍스트
JSContext는 스크립트 평가를 호스팅합니다. 평가 중 발생한 오류는 JSEvaluationError으로 표출되어 스크립트 실패를 Python 측 오류와 구분합니다.
모듈 로드
모듈 해석은 ModuleRegistry에 의해 관리되며, 모듈 지정자를 구현으로 매핑합니다. 누락된 모듈은 (라이브러리 고유의 타입 오류인) ModuleNotFoundError을 발생시켜, 조용히 스텁을 반환하지 않습니다.
로드 정책
ModuleLoadPolicy는 컨텍스트가 로드할 수 있는 것을 제어합니다 — 임의의 모듈 접근이 원치 않을 때 서버 측 처리에서 스크립트 동작을 샌드박스화하는 메커니즘입니다.
팁 및 모범 사례
- 처리 시나리오에 필요한 모듈만 등록하세요; 작은 레지스트리가 바로 샌드박스입니다.
JSEvaluationError를 일반 예외와 별도로 잡아 스크립트 버그와 파이프라인 버그를 구분하세요.ModuleNotFoundError를 치명적인 상황이 아니라 정책 신호로 다루세요 — 이는 종종 입력이 제공하지 않기로 선택한 브라우저 API를 기대한다는 의미입니다.
일반적인 문제
| 문제 | 원인 | 해결 방법 |
|---|---|---|
ModuleNotFoundError 평가 시 | 모듈이 등록되지 않음 | ModuleRegistry에 추가하거나 정책을 조정하세요 |
| 스크립트 실패로 파이프라인이 중단됩니다 | JSEvaluationError이(가) 포착되지 않음 | 평가 경계에서 처리하십시오 |
| 예기치 않은 모듈 액세스 | 정책이 너무 관대함 | 강화 ModuleLoadPolicy |
FAQ
구문 분석에 스크립트 평가가 필요합니까?
아니요 — 구문 분석, CSSOM 및 레이아웃은 스크립트 컨텍스트 없이도 작동합니다.
스크립트가 가져올 수 있는 것을 어떻게 제어하나요?
다음 ModuleRegistry (존재하는 것) 및 ModuleLoadPolicy (로드될 수 있는 것)을 통해.
스크립트 오류는 어떻게 표시되나요?
Python 측면에서 JSEvaluationError 예외로 나타납니다.
API Reference 요약
| Class/Method | 설명 |
|---|---|
JSContext | JavaScript 평가 컨텍스트 |
ModuleRegistry | 모듈 지정자 레지스트리 |
ModuleLoadPolicy | 모듈 로딩 정책 제어 |
JSEvaluationError | 타입된 스크립트-평가 실패 |
ModuleNotFoundError | 타입된 누락-모듈 실패 |