اگه تا حالا با Date خود جاوااسکریپت کار کرده باشی، می دونی چقدر می تونه اذیتت کنه. ماه ها از صفر شروع می شن، فرمت کردن بدون کد اضافه سخته و جمع کردن ده روز با یه تاریخ یعنی کلی حساب و کتاب دستی. dayjs برای همین کارها ساخته شده. یه کتابخانه کوچیکه که تاریخ رو می گیره و با چند تا متد خوانا مثل format، add، subtract و diff کارت رو راه می ندازه. متدها رو هم می تونی پشت هم زنجیر کنی.
دلیل اصلی محبوبیتش اینه که API اش عمدا شبیه Moment.js طراحی شده. اگه پروژه ای داری که با Moment نوشته شده، رفتن به dayjs معمولا بیشتر عوض کردن import و چند تا جزئیاته تا بازنویسی. فرق مهمش با Moment دو چیزه: خیلی سبک تره و ایمیوتبله. ایمیوتبل یعنی هر عمل یه نمونه جدید برمی گردونه و تاریخ اصلی دست نمی خوره. اینکه یه تابع بی خبر تاریخ تو رو عوض کنه، تو Moment یه باگ آشنا بود. برای سایت هایی که کاربراشون با اینترنت ضعیف موبایل میان، هر چی از باندل کم بشه به نفعته.
هسته dayjs ساده نگه داشته شده و بقیه امکانات رو جدا و به شکل افزونه اضافه می کنی؛ مثل زمان نسبی («۵ دقیقه پیش»)، UTC و منطقه زمانی، خوندن تاریخ با فرمت دلخواه و محاسبه بازه زمانی. فقط همونی رو لود می کنی که لازم داری. فایل زبان ها هم جدا لود می شن. یه نکته برای کاربرای ایرانی: هسته با تقویم میلادی کار می کنه. اگه تقویم شمسی (جلالی) می خوای، باید ببینی افزونه یا بسته جانبی مناسبی هست یا نه و با نسخه ای که استفاده می کنی سازگاره یا نه. اینو قبل از انتخاب تست کن، نه وسط پروژه.
کجا مناسب نیست؟ dayjs ابزار محاسبه و فرمت تاریخه، نه date picker یا تقویم کامل. اگه کل پروژه ات روی تقویم شمسی بنا شده، شاید کتابخانه ای که از اول جلالی رو پشتیبانی می کنه راحت تر باشه. اگه هم فقط یه بار یه تاریخ ساده رو فرمت می کنی، خود مرورگر با Intl کارت رو راه می ندازه.
نسخه های رسمی و بدون تغییر dayjs رو تو مخزن داخلی ما هم می تونی پیدا کنی، برای روزهایی که دسترسی به منابع خارجی محدوده. مجوزش MIT هست و استفاده تو پروژه های تجاری هم معمولا مشکلی نداره، ولی متن مجوز همراه بسته رو یه بار بخون.
راهنمای استفاده
ساده ترین راه برای سایت وردپرسی یا هر صفحه HTML اینه که فایل رو با کد آماده پایین همین صفحه به صفحه اضافه کنی. اگه با ابزار بیلد کار می کنی، از npm هم می تونی نصبش کنی.
- اول کتابخانه رو تو صفحه لود کن، قبل از اسکریپتی که ازش استفاده می کنه. تو وردپرس بهتره با wp_enqueue_script ثبتش کنی تا با اسکریپت های دیگه قاطی نشه.
- بعد تابع dayjs رو صدا بزن. بدون ورودی، زمان الان رو می ده و با یه رشته تاریخ، همون تاریخ رو.
- متدهای format، add، subtract و diff رو روی نتیجه بزن. هر کدوم یه نمونه جدید برمی گردونه و تاریخ اصلی سر جاش می مونه.
- برای امکانات اضافه مثل زمان نسبی یا UTC، فایل افزونه اش رو جدا لود کن و با extend فعالش کن.
- اگه خروجی به زبان دیگه ای لازمه، فایل زبانش رو لود کن و با locale فعالش کن.
یه چیز دیگه هم هست: dayjs رو فقط یه بار و تو یه جا لود کن. اگه قالب یا افزونه ای که استفاده می کنی خودش dayjs یا Moment همراهش داره، اول چک کن دو تا کتابخانه همزمان لود نشده باشن. این کار فقط حجم الکی اضافه می کنه.