Skip to content

مقایسه با گزینه‌های دیگر

مجموعه موجود ابزارهای تقویم جلالی و پارسی برای 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-jalaliAPI کامل date-fns، طعم جلالی🟢 بله🔴 خیر، یک تقویم🟡 از طریق date-fns، بدون نوع دقت صریح🔴 خیر🔴 خیر🔴 خیر
dayjs + jalalidayافزونه جلالی برای Day.js🟡 ناقص🔴 خیر🟡 از طریق Day.js🔴 خیر🔴 خیر🔴 خیر
persian-dateشیء تاریخ پارسی🔴 خیر🔴 خیر🔴 خیر🟡 ناقص🔴 خیر🔴 خیر
react-multi-date-pickerUI انتخابگر تاریخ React🟢 بله🟢 بله، چند تقویم🔴 بدون مدل صریح🟢 بله🟡 فقط React🔴 وابسته به UI، نه بدون ظاهر
vue-persian-datetime-pickerUI انتخابگر تاریخ 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 تصمیم نمی‌گیرد برنامه شما تاریخ را چگونه در طرح‌واره خودش ذخیره کند. فقط تصمیم می‌گیرد مؤلفه به‌صورت پیش‌فرض چه مقداری برگرداند (ببینید مقدار نمایش در برابر مقدار ذخیره)، و آن مقدار را مستقل از تقویم می‌کند تا مورد رایج نیاز به فکر اضافه نداشته باشد.