jsdom نسخهٔ ۳۰.۱؛ سرعت بیشتر و باگهای کمتر
خلاصهٔ کاملتر
jsdom نسخهٔ ۳۰.۱ رو بیرون داده و بخش بزرگی از این نسخه دربارهٔ سرعته. jsdom یه پیادهسازی از DOM مرورگر داخل Node.js هست، یعنی کتابخونهای که بدون باز کردن مرورگر واقعی، document و المانها و رویدادها رو برات شبیهسازی میکنه؛ برای همین موتور خیلی از تستهای فرانتانده. تو یادداشت انتشار اومده که این نسخه به scttcper تقدیم شده که با کمک ابزار هوش مصنوعی کلی نقطهٔ کند پیدا کرده و در همین مسیر چندتا رفتار غلط رو هم درست کرده.
بهبودهای سرعت چند جا رو گرفته: ساخت DOM، تغییر درخت، عملیات Range و دسترسی به live collectionها (یعنی لیستهایی مثل خروجی getElementsByTagName که خودشون با تغییر سند بهروز میشن)، مخصوصاً روی سندهای بزرگ. کنارش getComputedStyle()، تغییر استایلها و سریالسازی CSS سریعتر شده و ارسال رویداد، پیدا کردن label، آپدیت و گروه رادیوباتنها هم بهتر شده. مصرف حافظهٔ نودها، اتریبیوتها، لیسنرها و mutation observerها هم پایین اومده.
سمت رفع باگ، دو رگرسیون نسخهٔ ۳۰.۰ درست شده: querySelectorAll() وقتی بخش اول انتخابگر به خود المان میخورد چیزی برنمیگردوند، و عرض border برای المانهای بدون حاشیه اشتباهاً 16px گزارش میشد. حساسیت به حروف بزرگ و کوچیک تو انتخابگرهای اتریبیوتی، فوکوس داخل shadow tree، ترتیب اجرای اسکریپتها و کالبکهای custom element و چند نشتی حافظه هم برطرف شدن.
چندتا قابلیت جدید هم اضافه شده. حالا میشه از طریق نام به المانها روی document دسترسی داشت، مثلاً document.myForm برای فرمی که اسمش myForm هست. خطای QuotaExceededError اضافه شده و برای پر شدن سهمیهٔ storage و درخواستهای بیشازحد بزرگ crypto.getRandomValues() به کار میره. قوانین سستتر نامگذاری موقع ساخت المان و اتریبیوت و doctype هم پشتیبانی میشه، و window.close() دیگه دسترسی به سند رو از بین نمیبره.
نکات کلیدی:
- نسخهٔ ۳۰.۱ روی سرعت ساخت DOM، getComputedStyle()، ارسال رویداد و مصرف حافظه کار کرده.
- دسترسی با نام به المانها روی document اضافه شد، مثل document.myForm.
- خطای QuotaExceededError برای پر شدن سهمیهٔ storage اضافه شده.
- دو رگرسیون نسخهٔ ۳۰.۰ در querySelectorAll() و عرض border برطرف شد.
- به گفتهٔ یادداشت انتشار، بیشتر مشارکتکنندههای این نسخه با کمک هوش مصنوعی کار کردن.




