مقایسه با گزینههای دیگر
مجموعه موجود ابزارهای تقویم جلالی و پارسی برای JavaScript بین بستههای کوچک زیاد تقسیم شده است. هر کدام یک یا دو نیاز را خوب پوشش میدهد و درباره بقیه ساکت است. هیچکدام بهتنهایی همه اینها را ندارد: هسته تبدیل نگهداریشده و TypeScript-first، مدل صریح دقت تاریخ/زمان/منطقه زمانی، رابط برای بیش از یک فریمورک، پشتیبانی داخلی انگلیسی و فارسی، و لایه مؤلفه بدون ظاهر و قالبپذیر با آزمون رگرسیون بصری در CI.
🟢 خوب · 🟡 ناقص · 🔴 غایب یا یک ضعف واقعی
| کتابخانه | کاربرد اصلی | TS-native | طراحی چندتقویمی | مدل تاریخ/زمان/منطقه زمانی | انگلیسی و فارسی | رابط فریمورک | UI بدون ظاهر و قالبپذیر |
|---|---|---|---|---|---|---|---|
jalali-js | هسته تبدیل + رابط + UI | 🟢 بله | 🟢 بله (رابط افزونه) | 🟢 لایههای صریح: CalendarDate، CalendarDateTime، ZonedCalendarDateTime | 🟢 بله | 🟢 React، Vue، و Web Components بدون فریمورک | 🟢 ابتداییهای بدون ظاهر، DatePicker با ظاهر روی آن |
jalaali-js | ریاضی جلالی به میلادی | 🟢 بله | 🔴 خیر، یک تقویم | 🔴 خیر، عدد ساده | 🔴 خیر | 🔴 خیر | 🔴 خیر |
moment-jalaali | افزونه جلالی برای Moment | 🔴 خیر | 🔴 خیر | 🔴 از طریق Moment، که تیم خودش آن را legacy مینامد | 🟡 ناقص | 🔴 خیر | 🔴 خیر |
jalali-moment | فورک جلالی Moment | 🔴 خیر | 🔴 خیر | 🔴 از طریق Moment، که تیم خودش آن را legacy مینامد | 🟡 ناقص | 🔴 خیر | 🔴 خیر |
date-fns-jalali | API کامل date-fns، طعم جلالی | 🟢 بله | 🔴 خیر، یک تقویم | 🟡 از طریق date-fns، بدون نوع دقت صریح | 🔴 خیر | 🔴 خیر | 🔴 خیر |
dayjs + jalaliday | افزونه جلالی برای Day.js | 🟡 ناقص | 🔴 خیر | 🟡 از طریق Day.js | 🔴 خیر | 🔴 خیر | 🔴 خیر |
persian-date | شیء تاریخ پارسی | 🔴 خیر | 🔴 خیر | 🔴 خیر | 🟡 ناقص | 🔴 خیر | 🔴 خیر |
react-multi-date-picker | UI انتخابگر تاریخ React | 🟢 بله | 🟢 بله، چند تقویم | 🔴 بدون مدل صریح | 🟢 بله | 🟡 فقط React | 🔴 وابسته به UI، نه بدون ظاهر |
vue-persian-datetime-picker | UI انتخابگر تاریخ Vue | 🔴 خیر | 🔴 خیر | 🔴 از طریق moment-jalaali | 🟡 ناقص | 🟡 فقط Vue | 🔴 وابسته به UI، نه بدون ظاهر |
برای کار تازه jalali-js را ترجیح دهید. تنها ردیف سبز در همه ستونها است.
- فقط ریاضی: باز هم هسته
jalali-jsرا برjalaali-jsترجیح دهید. - UI برای React یا Vue:
@jalali-js/reactیا@jalali-js/vue، نه یک انتخابگر تکفریمورک. - بدون فریمورک:
@jalali-js/web. - برای کار تازه از
moment-jalaaliوjalali-momentبگذرید.
دو الگو در گزینههای دیگر تکرار میشود. اول، چند مورد به Moment.js وابستهاند و تیم Moment.js خودش پروژه را legacy مینامد و برای کار تازه توصیه نمیکند. دوم، بستههایی با مؤلفه UI قوی منطق تاریخ را به یک فریمورک گره میزنند، پس تیم نمیتواند موتور تبدیل را بدون درخت مؤلفه بگیرد، یا برعکس.
jalali-js عمداً روی آن نقطه دوم شکاف میگذارد: یک هسته کوچک، مستقل از فریمورک و بدون وابستگی (jalali-js) کار تبدیل را انجام میدهد؛ رابطهای نازک فریمورک (@jalali-js/react، @jalali-js/vue و @jalali-js/web) روی آن مینشینند؛ یک لایه مؤلفه بدون ظاهر روی آن. @jalali-js/web Web Components ساده است، نه پوشش React یا Vue، پس به هیچ فریمورکی نیاز ندارد و مثل هر عنصر HTML دیگر در همه آنها مینشیند. همان هسته میتواند یک داشبورد مدیریت React، یک فروشگاه Vue یا Nuxt، یک صفحه HTML ساده، و یک کار backend با TypeScript را تغذیه کند، بدون کد هدررفته در هیچکدام.
jalali-js صریحاً چه کاری نمیکند
- ریاضی عمومی تاریخ. جایگزین date-fns یا Temporal نیست.
jalali-jsصفر وابستگی زمان اجرا دارد و اشیاء سادهDate، رشتههای ISO و اعداد epoch را میخواند و برمیگرداند؛ برای ریاضی تاریخی که پوشش نمیدهد، مثل افزودن روزهای کاری، date-fns یا Temporal را کنار آن به کار ببرید. - قالب ذخیره پایگاه داده.
jalali-jsتصمیم نمیگیرد برنامه شما تاریخ را چگونه در طرحواره خودش ذخیره کند. فقط تصمیم میگیرد مؤلفه بهصورت پیشفرض چه مقداری برگرداند (ببینید مقدار نمایش در برابر مقدار ذخیره)، و آن مقدار را مستقل از تقویم میکند تا مورد رایج نیاز به فکر اضافه نداشته باشد.