زمینه 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 | خطای عدم وجود ماژول تایپشده |