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

همچنین ببینید:

 فارسی