اولین بتای Leaflet 2.0 منتشر شد
خلاصهٔ کاملتر
تیم Leaflet اولین بتای نسخه 2.0 رو منتشر کرده و به گفته خودشون نسبت به نسخه آلفا یه قدم بزرگ جلوتره. مهمترین تغییر اینه که کتابخونه حالا کاملاً tree-shakeable شده، یعنی باندلر فقط کدی رو که واقعاً استفاده میکنی تو خروجی میذاره. نتیجهش اینه که یه نقشه با یه لایه tile حالا 25.6 کیلوبایت gzip شدهست، در حالی که قبلاً 38 کیلوبایت بود. کل کد هم با کلاسهای ساده ES بازنویسی شده.
Leaflet حالا تایپهای TypeScript خودش رو همراه پکیج میده و دیگه به @types/leaflet نیازی نیست. این تایپها از خود سورس ساخته میشن و تو حالت strict چک شدن. یه دردسر قدیمی هم حل شده: عکسهای مارکر پیشفرض جاشون رو به یه آیکون SVG داخلی دادن که با هر باندلر یا CDN بدون تنظیم کار میکنه. این آیکون با هر رنگ CSS رنگ میگیره، مثلاً new DefaultIcon({color: 'crimson'})، و با گزینه rotation یا متد setRotation() هم میچرخه.
از نظر سرعت هم کلی بهبود اومده: آیکون مارکر ۲۵ تا ۴۵ درصد سریعتر رندر میشه و نصف DOM node قبلی رو داره. ساختن آبجکتها حدوداً دو برابر سریعتر شده و لایههای برداری ۱۲ تا ۱۴ درصد سریعتر دوباره کشیده میشن. یه مشکل دیگه هم برطرف شده: قبلاً موقع درگ کردن نقشه کل صفحه دوباره استایل میخورد و تو Chromium روی صفحههای بزرگ تا ۷۲ میلیثانیه طول میکشید.
دسترسپذیری هم خیلی بهتر شده. Leaflet حالا به تنظیم prefers-reduced-motion (یعنی وقتی کاربر تو سیستمش خواسته انیمیشنها کم بشن) احترام میذاره. مارکرها با Enter و Space کلیک میشن و مارکر قابل درگ با کلیدهای جهت جابهجا میشه. بیشتر از ۴۰ باگ هم درست شده، از جمله درزهای معروف بین tileها که از سال ۲۰۱۵ وجود داشت.
ولی این نسخه کلی تغییر ناسازگار هم داره. export پیشفرض حذف شده و باید از import * as L from 'leaflet' یا importهای اسمدار استفاده کنی. اسم کلاسها هم تخت شدن، مثلاً Control.Zoom شده ZoomControl و TileLayer.WMS شده WMSTileLayer. به جای initialize() و Class.extend() حالا از constructor() و class X extends Y استفاده میشه. فضای نام Browser و رویداد keypress هم حذف شدن. تیم میگه APIهای حذفشده یا خطا میدن یا یه هشدار نشون میدن که بگن جاش چی بذاری، و راهنمای مهاجرت هم همه تغییرات رو پوشش میده.
نکات کلیدی:
- حجم یه نقشه با یه لایه tile از 38 به 25.6 کیلوبایت (gzip) رسیده
- تایپهای TypeScript داخل پکیجه و جای @types/leaflet رو میگیره
- آیکون مارکر پیشفرض یه SVG داخلیه که رنگ و چرخش میگیره
- مرورگرهای هدف Baseline 2022 هستن، یعنی Safari 15.4 به بالا
- export پیشفرض حذف شده و اسم کلاسها تخت شدن، مثل ZoomControl
- بیشتر از ۴۰ باگ درست شده، از جمله درز بین tileها




